Mock Version: 6.4 Mock Version: 6.4 Mock Version: 6.4 Mock Version: 6.4 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'], chrootPath='/var/lib/mock/dlrn-centos9-dalmatian-x86_64-5/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1038gid=135user='mockbuild'unshare_net=TrueprintOutput=Falsenspawn_args=['--capability=cap_ipc_lock', '--suppress-sync=yes']) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.src.rpm Child return code was: 0 Mock Version: 6.4 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'], chrootPath='/var/lib/mock/dlrn-centos9-dalmatian-x86_64-5/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1038gid=135user='mockbuild'unshare_net=TrueprintOutput=Falsenspawn_args=['--capability=cap_ipc_lock', '--suppress-sync=yes']) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.src.rpm Child return code was: 0 ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'], chrootPath='/var/lib/mock/dlrn-centos9-dalmatian-x86_64-5/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1038gid=135user='mockbuild'unshare_net=TrueraiseExc=FalseprintOutput=Falsenspawn_args=['--capability=cap_ipc_lock', '--suppress-sync=yes']) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.C4aBk3 + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf ironic-26.1.5.dev2 + /usr/bin/tar -xof - + /usr/bin/gzip -dc /builddir/build/SOURCES/ironic-26.1.5.dev2-0.20251111185332.f2a4a74.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd ironic-26.1.5.dev2 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + /usr/bin/git init -q + /usr/bin/git config user.name rpm-build + /usr/bin/git config user.email '' + /usr/bin/git config gc.auto 0 + /usr/bin/git add --force . + /usr/bin/git commit -q --allow-empty -a --author 'rpm-build ' -m 'openstack-ironic-26.1.5 base' + sed -i /tempest/d setup.cfg + rm -rf ironic_tempest_plugin + sed -i '/^[[:space:]]*-c{env:.*_CONSTRAINTS_FILE.*/d' tox.ini + sed -i 's/^deps = -c{env:.*_CONSTRAINTS_FILE.*/deps =/' tox.ini + sed -i '/^minversion.*/d' tox.ini + sed -i '/^requires.*virtualenv.*/d' tox.ini + for pkg in doc8 bandit pre-commit hacking flake8-import-order sphinx openstackdocstheme + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f doc/requirements.txt ']' + sed -i '/^doc8.*/d' doc/requirements.txt + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f test-requirements.txt ']' + sed -i '/^doc8.*/d' test-requirements.txt + for pkg in doc8 bandit pre-commit hacking flake8-import-order sphinx openstackdocstheme + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f doc/requirements.txt ']' + sed -i '/^bandit.*/d' doc/requirements.txt + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f test-requirements.txt ']' + sed -i '/^bandit.*/d' test-requirements.txt + for pkg in doc8 bandit pre-commit hacking flake8-import-order sphinx openstackdocstheme + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f doc/requirements.txt ']' + sed -i '/^pre-commit.*/d' doc/requirements.txt + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f test-requirements.txt ']' + sed -i '/^pre-commit.*/d' test-requirements.txt + for pkg in doc8 bandit pre-commit hacking flake8-import-order sphinx openstackdocstheme + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f doc/requirements.txt ']' + sed -i '/^hacking.*/d' doc/requirements.txt + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f test-requirements.txt ']' + sed -i '/^hacking.*/d' test-requirements.txt + for pkg in doc8 bandit pre-commit hacking flake8-import-order sphinx openstackdocstheme + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f doc/requirements.txt ']' + sed -i '/^flake8-import-order.*/d' doc/requirements.txt + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f test-requirements.txt ']' + sed -i '/^flake8-import-order.*/d' test-requirements.txt + for pkg in doc8 bandit pre-commit hacking flake8-import-order sphinx openstackdocstheme + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f doc/requirements.txt ']' + sed -i '/^sphinx.*/d' doc/requirements.txt + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f test-requirements.txt ']' + sed -i '/^sphinx.*/d' test-requirements.txt + for pkg in doc8 bandit pre-commit hacking flake8-import-order sphinx openstackdocstheme + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f doc/requirements.txt ']' + sed -i '/^openstackdocstheme.*/d' doc/requirements.txt + for reqfile in doc/requirements.txt test-requirements.txt + '[' -f test-requirements.txt ']' + sed -i '/^openstackdocstheme.*/d' test-requirements.txt + sed -i 's/netaddr.*/netaddr/g' requirements.txt + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.q2mFeH + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + '[' -f setup.py ']' + echo 'python3dist(setuptools) >= 40.8' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + RPM_TOXENV=py39 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires -t -e py39 Handling setuptools >= 40.8 from default build backend Requirement satisfied: setuptools >= 40.8 (installed: setuptools 65.5.1) Handling wheel from get_requires_for_build_wheel Requirement not satisfied: wheel Handling pbr>=2.0.0 from get_requires_for_build_wheel Requirement satisfied: pbr>=2.0.0 (installed: pbr 6.0.0) Exiting dependency generation pass: get_requires_for_build_wheel + cat /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noprep --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'], chrootPath='/var/lib/mock/dlrn-centos9-dalmatian-x86_64-5/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1038gid=135user='mockbuild'unshare_net=TrueraiseExc=FalseprintOutput=Falsenspawn_args=['--capability=cap_ipc_lock', '--suppress-sync=yes']) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noprep --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.2bEIL9 + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + '[' -f setup.py ']' + echo 'python3dist(setuptools) >= 40.8' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + RPM_TOXENV=py39 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires -t -e py39 Handling setuptools >= 40.8 from default build backend Requirement satisfied: setuptools >= 40.8 (installed: setuptools 65.5.1) Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.36.2) Handling pbr>=2.0.0 from get_requires_for_build_wheel Requirement satisfied: pbr>=2.0.0 (installed: pbr 6.0.0) Handling tox-current-env >= 0.0.6 from tox itself Requirement not satisfied: tox-current-env >= 0.0.6 Exiting dependency generation pass: tox itself + cat /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noprep --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'], chrootPath='/var/lib/mock/dlrn-centos9-dalmatian-x86_64-5/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1038gid=135user='mockbuild'unshare_net=TrueraiseExc=FalseprintOutput=Falsenspawn_args=['--capability=cap_ipc_lock', '--suppress-sync=yes']) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noprep --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.zcs5fu + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + '[' -f setup.py ']' + echo 'python3dist(setuptools) >= 40.8' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + RPM_TOXENV=py39 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires -t -e py39 Handling setuptools >= 40.8 from default build backend Requirement satisfied: setuptools >= 40.8 (installed: setuptools 65.5.1) Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.36.2) Handling pbr>=2.0.0 from get_requires_for_build_wheel Requirement satisfied: pbr>=2.0.0 (installed: pbr 6.0.0) Handling tox-current-env >= 0.0.6 from tox itself Requirement satisfied: tox-current-env >= 0.0.6 (installed: tox-current-env 0.0.8) ___________________________________ summary ____________________________________ py39: commands succeeded congratulations :) Handling pbr>=3.1.1 from tox --print-deps-only: py39 Requirement satisfied: pbr>=3.1.1 (installed: pbr 6.0.0) Handling SQLAlchemy>=1.4.0 from tox --print-deps-only: py39 Requirement satisfied: SQLAlchemy>=1.4.0 (installed: SQLAlchemy 2.0.31) Handling alembic>=1.4.2 from tox --print-deps-only: py39 Requirement satisfied: alembic>=1.4.2 (installed: alembic 1.13.2) Handling automaton>=1.9.0 from tox --print-deps-only: py39 Requirement not satisfied: automaton>=1.9.0 Handling eventlet>=0.30.1 from tox --print-deps-only: py39 Requirement satisfied: eventlet>=0.30.1 (installed: eventlet 0.36.1) Handling WebOb>=1.7.1 from tox --print-deps-only: py39 Requirement not satisfied: WebOb>=1.7.1 Handling keystoneauth1>=4.2.0 from tox --print-deps-only: py39 Requirement not satisfied: keystoneauth1>=4.2.0 Handling ironic-lib>=6.0.0 from tox --print-deps-only: py39 Requirement not satisfied: ironic-lib>=6.0.0 Handling stevedore>=1.29.0 from tox --print-deps-only: py39 Requirement satisfied: stevedore>=1.29.0 (installed: stevedore 5.3.0) Handling oslo.concurrency>=4.2.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.concurrency>=4.2.0 Handling oslo.config>=6.8.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.config>=6.8.0 (installed: oslo.config 9.6.0) Handling oslo.context>=2.22.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.context>=2.22.0 Handling oslo.db>=9.1.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.db>=9.1.0 (installed: oslo.db 16.0.0) Handling oslo.rootwrap>=5.8.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.rootwrap>=5.8.0 Handling oslo.log>=4.3.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.log>=4.3.0 Handling oslo.middleware>=3.31.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.middleware>=3.31.0 Handling oslo.policy>=4.4.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.policy>=4.4.0 Handling oslo.serialization>=2.25.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.serialization>=2.25.0 Handling oslo.service>=1.24.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.service>=1.24.0 Handling oslo.upgradecheck>=1.3.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.upgradecheck>=1.3.0 Handling oslo.utils>=4.5.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.utils>=4.5.0 (installed: oslo.utils 7.3.1) Handling osprofiler>=1.5.0 from tox --print-deps-only: py39 Requirement not satisfied: osprofiler>=1.5.0 Handling os-traits>=0.4.0 from tox --print-deps-only: py39 Requirement not satisfied: os-traits>=0.4.0 Handling pecan>=1.0.0 from tox --print-deps-only: py39 Requirement not satisfied: pecan>=1.0.0 Handling pycdlib>=1.11.0 from tox --print-deps-only: py39 Requirement not satisfied: pycdlib>=1.11.0 Handling requests>=2.18.0 from tox --print-deps-only: py39 Requirement satisfied: requests>=2.18.0 (installed: requests 2.32.3) Handling rfc3986>=1.2.0 from tox --print-deps-only: py39 Requirement satisfied: rfc3986>=1.2.0 (installed: rfc3986 1.5.0) Handling jsonpatch>=1.16 from tox --print-deps-only: py39 Requirement not satisfied: jsonpatch>=1.16 Handling Jinja2>=3.0.0 from tox --print-deps-only: py39 Requirement satisfied: Jinja2>=3.0.0 (installed: Jinja2 3.0.1) Handling keystonemiddleware>=9.5.0 from tox --print-deps-only: py39 Requirement not satisfied: keystonemiddleware>=9.5.0 Handling oslo.messaging>=14.1.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.messaging>=14.1.0 Handling tenacity>=6.3.1 from tox --print-deps-only: py39 Requirement not satisfied: tenacity>=6.3.1 Handling oslo.versionedobjects>=1.31.2 from tox --print-deps-only: py39 Requirement not satisfied: oslo.versionedobjects>=1.31.2 Handling jsonschema>=4.0.0 from tox --print-deps-only: py39 Requirement not satisfied: jsonschema>=4.0.0 Handling psutil>=3.2.2 from tox --print-deps-only: py39 Requirement not satisfied: psutil>=3.2.2 Handling futurist>=1.2.0 from tox --print-deps-only: py39 Requirement not satisfied: futurist>=1.2.0 Handling tooz>=2.7.0 from tox --print-deps-only: py39 Requirement not satisfied: tooz>=2.7.0 Handling openstacksdk>=0.99.0 from tox --print-deps-only: py39 Requirement not satisfied: openstacksdk>=0.99.0 Handling sushy>=4.8.0 from tox --print-deps-only: py39 Requirement not satisfied: sushy>=4.8.0 Handling construct>=2.9.39 from tox --print-deps-only: py39 Requirement not satisfied: construct>=2.9.39 Handling netaddr from tox --print-deps-only: py39 Requirement satisfied: netaddr (installed: netaddr 0.10.1) Handling microversion-parse>=1.0.1 from tox --print-deps-only: py39 Requirement not satisfied: microversion-parse>=1.0.1 Handling coverage>=4.0 from tox --print-deps-only: py39 Requirement not satisfied: coverage>=4.0 Handling ddt>=1.2.1 from tox --print-deps-only: py39 Requirement not satisfied: ddt>=1.2.1 Handling fixtures>=3.0.0 from tox --print-deps-only: py39 Requirement satisfied: fixtures>=3.0.0 (installed: fixtures 4.0.1) Handling PyMySQL>=0.8.0 from tox --print-deps-only: py39 Requirement satisfied: PyMySQL>=0.8.0 (installed: PyMySQL 0.10.1) Handling iso8601>=0.1.11 from tox --print-deps-only: py39 Requirement satisfied: iso8601>=0.1.11 (installed: iso8601 1.1.0) Handling oslo.reports>=1.18.0 from tox --print-deps-only: py39 Requirement not satisfied: oslo.reports>=1.18.0 Handling oslotest>=3.2.0 from tox --print-deps-only: py39 Requirement satisfied: oslotest>=3.2.0 (installed: oslotest 5.0.0) Handling stestr>=2.0.0 from tox --print-deps-only: py39 Requirement not satisfied: stestr>=2.0.0 Handling psycopg2>=2.8.5 from tox --print-deps-only: py39 Requirement satisfied: psycopg2>=2.8.5 (installed: psycopg2 2.9.9) Handling testtools>=2.5.0 from tox --print-deps-only: py39 Requirement satisfied: testtools>=2.5.0 (installed: testtools 2.7.1) Handling WebTest>=2.0.27 from tox --print-deps-only: py39 Requirement not satisfied: WebTest>=2.0.27 Handling pysnmp-lextudio>=5.0.0 from tox --print-deps-only: py39 Requirement not satisfied: pysnmp-lextudio>=5.0.0 Handling pyasn1>=0.5.1 from tox --print-deps-only: py39 Requirement not satisfied: pyasn1>=0.5.1 Handling pyasn1-modules>=0.3.0 from tox --print-deps-only: py39 Requirement not satisfied: pyasn1-modules>=0.3.0 /usr/lib/python3.9/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( /usr/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( running dist_info writing ironic.egg-info/PKG-INFO writing dependency_links to ironic.egg-info/dependency_links.txt writing entry points to ironic.egg-info/entry_points.txt writing requirements to ironic.egg-info/requires.txt writing top-level names to ironic.egg-info/top_level.txt writing pbr to ironic.egg-info/pbr.json [pbr] Processing SOURCES.txt [pbr] In git context, generating filelist from git warning: no previously-included files found matching '.gitignore' warning: no previously-included files found matching '.gitreview' warning: no previously-included files matching '*.pyc' found anywhere in distribution adding license file 'LICENSE' adding license file 'AUTHORS' writing manifest file 'ironic.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/ironic-26.1.5.dev2/ironic-26.1.5.dev2.dist-info' adding license file "LICENSE" (matched pattern "LICEN[CS]E*") adding license file "AUTHORS" (matched pattern "AUTHORS*") Handling pbr (>=3.1.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: pbr (>=3.1.1) (installed: pbr 6.0.0) Handling SQLAlchemy (>=1.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: SQLAlchemy (>=1.4.0) (installed: SQLAlchemy 2.0.31) Handling alembic (>=1.4.2) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: alembic (>=1.4.2) (installed: alembic 1.13.2) Handling automaton (>=1.9.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: automaton (>=1.9.0) Handling eventlet (>=0.30.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: eventlet (>=0.30.1) (installed: eventlet 0.36.1) Handling WebOb (>=1.7.1) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: WebOb (>=1.7.1) Handling keystoneauth1 (>=4.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: keystoneauth1 (>=4.2.0) Handling ironic-lib (>=6.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: ironic-lib (>=6.0.0) Handling stevedore (>=1.29.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: stevedore (>=1.29.0) (installed: stevedore 5.3.0) Handling oslo.concurrency (>=4.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.concurrency (>=4.2.0) Handling oslo.config (>=6.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.config (>=6.8.0) (installed: oslo.config 9.6.0) Handling oslo.context (>=2.22.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.context (>=2.22.0) Handling oslo.db (>=9.1.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.db (>=9.1.0) (installed: oslo.db 16.0.0) Handling oslo.rootwrap (>=5.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.rootwrap (>=5.8.0) Handling oslo.log (>=4.3.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.log (>=4.3.0) Handling oslo.middleware (>=3.31.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.middleware (>=3.31.0) Handling oslo.policy (>=4.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.policy (>=4.4.0) Handling oslo.serialization (>=2.25.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.serialization (>=2.25.0) Handling oslo.service (>=1.24.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.service (>=1.24.0) Handling oslo.upgradecheck (>=1.3.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.upgradecheck (>=1.3.0) Handling oslo.utils (>=4.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.utils (>=4.5.0) (installed: oslo.utils 7.3.1) Handling osprofiler (>=1.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: osprofiler (>=1.5.0) Handling os-traits (>=0.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: os-traits (>=0.4.0) Handling pecan (>=1.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: pecan (>=1.0.0) Handling pycdlib (>=1.11.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: pycdlib (>=1.11.0) Handling requests (>=2.18.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: requests (>=2.18.0) (installed: requests 2.32.3) Handling rfc3986 (>=1.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: rfc3986 (>=1.2.0) (installed: rfc3986 1.5.0) Handling jsonpatch (>=1.16) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: jsonpatch (>=1.16) Handling Jinja2 (>=3.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: Jinja2 (>=3.0.0) (installed: Jinja2 3.0.1) Handling keystonemiddleware (>=9.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: keystonemiddleware (>=9.5.0) Handling oslo.messaging (>=14.1.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.messaging (>=14.1.0) Handling tenacity (>=6.3.1) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: tenacity (>=6.3.1) Handling oslo.versionedobjects (>=1.31.2) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: oslo.versionedobjects (>=1.31.2) Handling jsonschema (>=4.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: jsonschema (>=4.0.0) Handling psutil (>=3.2.2) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: psutil (>=3.2.2) Handling futurist (>=1.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: futurist (>=1.2.0) Handling tooz (>=2.7.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: tooz (>=2.7.0) Handling openstacksdk (>=0.99.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: openstacksdk (>=0.99.0) Handling sushy (>=4.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: sushy (>=4.8.0) Handling construct (>=2.9.39) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: construct (>=2.9.39) Handling netaddr from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: netaddr (installed: netaddr 0.10.1) Handling microversion-parse (>=1.0.1) from hook generated metadata: Requires-Dist (ironic) Requirement not satisfied: microversion-parse (>=1.0.1) Handling virtualbmc (>=1.4.0) ; extra == 'devstack' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: virtualbmc (>=1.4.0) ; extra == 'devstack' Handling oslo.reports (>=1.18.0) ; extra == 'guru_meditation_reports' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.reports (>=1.18.0) ; extra == 'guru_meditation_reports' Handling oslo.i18n (>=3.20.0) ; extra == 'i18n' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.i18n (>=3.20.0) ; extra == 'i18n' Handling coverage (>=4.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: coverage (>=4.0) ; extra == 'test' Handling ddt (>=1.2.1) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: ddt (>=1.2.1) ; extra == 'test' Handling fixtures (>=3.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: fixtures (>=3.0.0) ; extra == 'test' Handling PyMySQL (>=0.8.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: PyMySQL (>=0.8.0) ; extra == 'test' Handling iso8601 (>=0.1.11) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: iso8601 (>=0.1.11) ; extra == 'test' Handling oslo.reports (>=1.18.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.reports (>=1.18.0) ; extra == 'test' Handling oslotest (>=3.2.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslotest (>=3.2.0) ; extra == 'test' Handling stestr (>=2.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: stestr (>=2.0.0) ; extra == 'test' Handling psycopg2 (>=2.8.5) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: psycopg2 (>=2.8.5) ; extra == 'test' Handling testtools (>=2.5.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: testtools (>=2.5.0) ; extra == 'test' Handling WebTest (>=2.0.27) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: WebTest (>=2.0.27) ; extra == 'test' Handling pysnmp-lextudio (>=5.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pysnmp-lextudio (>=5.0.0) ; extra == 'test' Handling pyasn1 (>=0.5.1) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pyasn1 (>=0.5.1) ; extra == 'test' Handling pyasn1-modules (>=0.3.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pyasn1-modules (>=0.3.0) ; extra == 'test' + cat /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires + rm -rfv ironic-26.1.5.dev2.dist-info/ removed 'ironic-26.1.5.dev2.dist-info/LICENSE' removed 'ironic-26.1.5.dev2.dist-info/AUTHORS' removed 'ironic-26.1.5.dev2.dist-info/METADATA' removed 'ironic-26.1.5.dev2.dist-info/entry_points.txt' removed 'ironic-26.1.5.dev2.dist-info/pbr.json' removed 'ironic-26.1.5.dev2.dist-info/top_level.txt' removed directory 'ironic-26.1.5.dev2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noprep --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'], chrootPath='/var/lib/mock/dlrn-centos9-dalmatian-x86_64-5/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1038gid=135user='mockbuild'unshare_net=TrueraiseExc=FalseprintOutput=Falsenspawn_args=['--capability=cap_ipc_lock', '--suppress-sync=yes']) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -br --noprep --target x86_64 --nodeps /builddir/build/SPECS/openstack-ironic.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.I8WGdo + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + '[' -f setup.py ']' + echo 'python3dist(setuptools) >= 40.8' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + RPM_TOXENV=py39 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires -t -e py39 Handling setuptools >= 40.8 from default build backend Requirement satisfied: setuptools >= 40.8 (installed: setuptools 65.5.1) Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.36.2) Handling pbr>=2.0.0 from get_requires_for_build_wheel Requirement satisfied: pbr>=2.0.0 (installed: pbr 6.0.0) Handling tox-current-env >= 0.0.6 from tox itself Requirement satisfied: tox-current-env >= 0.0.6 (installed: tox-current-env 0.0.8) ___________________________________ summary ____________________________________ py39: commands succeeded congratulations :) Handling pbr>=3.1.1 from tox --print-deps-only: py39 Requirement satisfied: pbr>=3.1.1 (installed: pbr 6.0.0) Handling SQLAlchemy>=1.4.0 from tox --print-deps-only: py39 Requirement satisfied: SQLAlchemy>=1.4.0 (installed: SQLAlchemy 2.0.31) Handling alembic>=1.4.2 from tox --print-deps-only: py39 Requirement satisfied: alembic>=1.4.2 (installed: alembic 1.13.2) Handling automaton>=1.9.0 from tox --print-deps-only: py39 Requirement satisfied: automaton>=1.9.0 (installed: automaton 3.2.0) Handling eventlet>=0.30.1 from tox --print-deps-only: py39 Requirement satisfied: eventlet>=0.30.1 (installed: eventlet 0.36.1) Handling WebOb>=1.7.1 from tox --print-deps-only: py39 Requirement satisfied: WebOb>=1.7.1 (installed: WebOb 1.8.8) Handling keystoneauth1>=4.2.0 from tox --print-deps-only: py39 Requirement satisfied: keystoneauth1>=4.2.0 (installed: keystoneauth1 5.8.1) Handling ironic-lib>=6.0.0 from tox --print-deps-only: py39 Requirement satisfied: ironic-lib>=6.0.0 (installed: ironic-lib 6.2.0) Handling stevedore>=1.29.0 from tox --print-deps-only: py39 Requirement satisfied: stevedore>=1.29.0 (installed: stevedore 5.3.0) Handling oslo.concurrency>=4.2.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.concurrency>=4.2.0 (installed: oslo.concurrency 6.1.0) Handling oslo.config>=6.8.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.config>=6.8.0 (installed: oslo.config 9.6.0) Handling oslo.context>=2.22.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.context>=2.22.0 (installed: oslo.context 5.6.0) Handling oslo.db>=9.1.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.db>=9.1.0 (installed: oslo.db 16.0.0) Handling oslo.rootwrap>=5.8.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.rootwrap>=5.8.0 (installed: oslo.rootwrap 7.3.0) Handling oslo.log>=4.3.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.log>=4.3.0 (installed: oslo.log 6.1.2) Handling oslo.middleware>=3.31.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.middleware>=3.31.0 (installed: oslo.middleware 6.2.0) Handling oslo.policy>=4.4.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.policy>=4.4.0 (installed: oslo.policy 4.4.0) Handling oslo.serialization>=2.25.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.serialization>=2.25.0 (installed: oslo.serialization 5.5.0) Handling oslo.service>=1.24.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.service>=1.24.0 (installed: oslo.service 3.5.0) Handling oslo.upgradecheck>=1.3.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.upgradecheck>=1.3.0 (installed: oslo.upgradecheck 2.4.0) Handling oslo.utils>=4.5.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.utils>=4.5.0 (installed: oslo.utils 7.3.1) Handling osprofiler>=1.5.0 from tox --print-deps-only: py39 Requirement satisfied: osprofiler>=1.5.0 (installed: osprofiler 4.2.0) Handling os-traits>=0.4.0 from tox --print-deps-only: py39 Requirement satisfied: os-traits>=0.4.0 (installed: os-traits 3.1.0) Handling pecan>=1.0.0 from tox --print-deps-only: py39 Requirement satisfied: pecan>=1.0.0 (installed: pecan 1.5.1) Handling pycdlib>=1.11.0 from tox --print-deps-only: py39 Requirement satisfied: pycdlib>=1.11.0 (installed: pycdlib 1.11.0) Handling requests>=2.18.0 from tox --print-deps-only: py39 Requirement satisfied: requests>=2.18.0 (installed: requests 2.32.3) Handling rfc3986>=1.2.0 from tox --print-deps-only: py39 Requirement satisfied: rfc3986>=1.2.0 (installed: rfc3986 1.5.0) Handling jsonpatch>=1.16 from tox --print-deps-only: py39 Requirement satisfied: jsonpatch>=1.16 (installed: jsonpatch 1.21) Handling Jinja2>=3.0.0 from tox --print-deps-only: py39 Requirement satisfied: Jinja2>=3.0.0 (installed: Jinja2 3.0.1) Handling keystonemiddleware>=9.5.0 from tox --print-deps-only: py39 Requirement satisfied: keystonemiddleware>=9.5.0 (installed: keystonemiddleware 10.7.1) Handling oslo.messaging>=14.1.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.messaging>=14.1.0 (installed: oslo.messaging 14.9.1) Handling tenacity>=6.3.1 from tox --print-deps-only: py39 Requirement satisfied: tenacity>=6.3.1 (installed: tenacity 8.2.3) Handling oslo.versionedobjects>=1.31.2 from tox --print-deps-only: py39 Requirement satisfied: oslo.versionedobjects>=1.31.2 (installed: oslo.versionedobjects 3.4.0) Handling jsonschema>=4.0.0 from tox --print-deps-only: py39 Requirement satisfied: jsonschema>=4.0.0 (installed: jsonschema 4.16.0) Handling psutil>=3.2.2 from tox --print-deps-only: py39 Requirement satisfied: psutil>=3.2.2 (installed: psutil 5.8.0) Handling futurist>=1.2.0 from tox --print-deps-only: py39 Requirement satisfied: futurist>=1.2.0 (installed: futurist 3.0.0) Handling tooz>=2.7.0 from tox --print-deps-only: py39 Requirement satisfied: tooz>=2.7.0 (installed: tooz 6.3.0) Handling openstacksdk>=0.99.0 from tox --print-deps-only: py39 Requirement satisfied: openstacksdk>=0.99.0 (installed: openstacksdk 4.0.1) Handling sushy>=4.8.0 from tox --print-deps-only: py39 Requirement satisfied: sushy>=4.8.0 (installed: sushy 5.2.1) Handling construct>=2.9.39 from tox --print-deps-only: py39 Requirement satisfied: construct>=2.9.39 (installed: construct 2.10.70) Handling netaddr from tox --print-deps-only: py39 Requirement satisfied: netaddr (installed: netaddr 0.10.1) Handling microversion-parse>=1.0.1 from tox --print-deps-only: py39 Requirement satisfied: microversion-parse>=1.0.1 (installed: microversion-parse 2.0.0) Handling coverage>=4.0 from tox --print-deps-only: py39 Requirement satisfied: coverage>=4.0 (installed: coverage 7.3.2) Handling ddt>=1.2.1 from tox --print-deps-only: py39 Requirement satisfied: ddt>=1.2.1 (installed: ddt 1.6.0) Handling fixtures>=3.0.0 from tox --print-deps-only: py39 Requirement satisfied: fixtures>=3.0.0 (installed: fixtures 4.0.1) Handling PyMySQL>=0.8.0 from tox --print-deps-only: py39 Requirement satisfied: PyMySQL>=0.8.0 (installed: PyMySQL 0.10.1) Handling iso8601>=0.1.11 from tox --print-deps-only: py39 Requirement satisfied: iso8601>=0.1.11 (installed: iso8601 1.1.0) Handling oslo.reports>=1.18.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.reports>=1.18.0 (installed: oslo.reports 3.4.1.dev1) Handling oslotest>=3.2.0 from tox --print-deps-only: py39 Requirement satisfied: oslotest>=3.2.0 (installed: oslotest 5.0.0) Handling stestr>=2.0.0 from tox --print-deps-only: py39 Requirement satisfied: stestr>=2.0.0 (installed: stestr 4.1.0) Handling psycopg2>=2.8.5 from tox --print-deps-only: py39 Requirement satisfied: psycopg2>=2.8.5 (installed: psycopg2 2.9.9) Handling testtools>=2.5.0 from tox --print-deps-only: py39 Requirement satisfied: testtools>=2.5.0 (installed: testtools 2.7.1) Handling WebTest>=2.0.27 from tox --print-deps-only: py39 Requirement satisfied: WebTest>=2.0.27 (installed: WebTest 3.0.0) Handling pysnmp-lextudio>=5.0.0 from tox --print-deps-only: py39 Requirement satisfied: pysnmp-lextudio>=5.0.0 (installed: pysnmp-lextudio 5.0.26) Handling pyasn1>=0.5.1 from tox --print-deps-only: py39 Requirement satisfied: pyasn1>=0.5.1 (installed: pyasn1 0.6.0) Handling pyasn1-modules>=0.3.0 from tox --print-deps-only: py39 Requirement satisfied: pyasn1-modules>=0.3.0 (installed: pyasn1-modules 0.4.0) /usr/lib/python3.9/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( /usr/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( running dist_info writing ironic.egg-info/PKG-INFO writing dependency_links to ironic.egg-info/dependency_links.txt writing entry points to ironic.egg-info/entry_points.txt writing requirements to ironic.egg-info/requires.txt writing top-level names to ironic.egg-info/top_level.txt writing pbr to ironic.egg-info/pbr.json [pbr] Processing SOURCES.txt [pbr] In git context, generating filelist from git warning: no previously-included files found matching '.gitignore' warning: no previously-included files found matching '.gitreview' warning: no previously-included files matching '*.pyc' found anywhere in distribution adding license file 'LICENSE' adding license file 'AUTHORS' writing manifest file 'ironic.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/ironic-26.1.5.dev2/ironic-26.1.5.dev2.dist-info' adding license file "LICENSE" (matched pattern "LICEN[CS]E*") adding license file "AUTHORS" (matched pattern "AUTHORS*") Handling pbr (>=3.1.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: pbr (>=3.1.1) (installed: pbr 6.0.0) Handling SQLAlchemy (>=1.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: SQLAlchemy (>=1.4.0) (installed: SQLAlchemy 2.0.31) Handling alembic (>=1.4.2) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: alembic (>=1.4.2) (installed: alembic 1.13.2) Handling automaton (>=1.9.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: automaton (>=1.9.0) (installed: automaton 3.2.0) Handling eventlet (>=0.30.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: eventlet (>=0.30.1) (installed: eventlet 0.36.1) Handling WebOb (>=1.7.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: WebOb (>=1.7.1) (installed: WebOb 1.8.8) Handling keystoneauth1 (>=4.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: keystoneauth1 (>=4.2.0) (installed: keystoneauth1 5.8.1) Handling ironic-lib (>=6.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: ironic-lib (>=6.0.0) (installed: ironic-lib 6.2.0) Handling stevedore (>=1.29.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: stevedore (>=1.29.0) (installed: stevedore 5.3.0) Handling oslo.concurrency (>=4.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.concurrency (>=4.2.0) (installed: oslo.concurrency 6.1.0) Handling oslo.config (>=6.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.config (>=6.8.0) (installed: oslo.config 9.6.0) Handling oslo.context (>=2.22.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.context (>=2.22.0) (installed: oslo.context 5.6.0) Handling oslo.db (>=9.1.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.db (>=9.1.0) (installed: oslo.db 16.0.0) Handling oslo.rootwrap (>=5.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.rootwrap (>=5.8.0) (installed: oslo.rootwrap 7.3.0) Handling oslo.log (>=4.3.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.log (>=4.3.0) (installed: oslo.log 6.1.2) Handling oslo.middleware (>=3.31.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.middleware (>=3.31.0) (installed: oslo.middleware 6.2.0) Handling oslo.policy (>=4.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.policy (>=4.4.0) (installed: oslo.policy 4.4.0) Handling oslo.serialization (>=2.25.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.serialization (>=2.25.0) (installed: oslo.serialization 5.5.0) Handling oslo.service (>=1.24.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.service (>=1.24.0) (installed: oslo.service 3.5.0) Handling oslo.upgradecheck (>=1.3.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.upgradecheck (>=1.3.0) (installed: oslo.upgradecheck 2.4.0) Handling oslo.utils (>=4.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.utils (>=4.5.0) (installed: oslo.utils 7.3.1) Handling osprofiler (>=1.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: osprofiler (>=1.5.0) (installed: osprofiler 4.2.0) Handling os-traits (>=0.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: os-traits (>=0.4.0) (installed: os-traits 3.1.0) Handling pecan (>=1.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: pecan (>=1.0.0) (installed: pecan 1.5.1) Handling pycdlib (>=1.11.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: pycdlib (>=1.11.0) (installed: pycdlib 1.11.0) Handling requests (>=2.18.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: requests (>=2.18.0) (installed: requests 2.32.3) Handling rfc3986 (>=1.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: rfc3986 (>=1.2.0) (installed: rfc3986 1.5.0) Handling jsonpatch (>=1.16) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: jsonpatch (>=1.16) (installed: jsonpatch 1.21) Handling Jinja2 (>=3.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: Jinja2 (>=3.0.0) (installed: Jinja2 3.0.1) Handling keystonemiddleware (>=9.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: keystonemiddleware (>=9.5.0) (installed: keystonemiddleware 10.7.1) Handling oslo.messaging (>=14.1.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.messaging (>=14.1.0) (installed: oslo.messaging 14.9.1) Handling tenacity (>=6.3.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: tenacity (>=6.3.1) (installed: tenacity 8.2.3) Handling oslo.versionedobjects (>=1.31.2) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.versionedobjects (>=1.31.2) (installed: oslo.versionedobjects 3.4.0) Handling jsonschema (>=4.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: jsonschema (>=4.0.0) (installed: jsonschema 4.16.0) Handling psutil (>=3.2.2) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: psutil (>=3.2.2) (installed: psutil 5.8.0) Handling futurist (>=1.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: futurist (>=1.2.0) (installed: futurist 3.0.0) Handling tooz (>=2.7.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: tooz (>=2.7.0) (installed: tooz 6.3.0) Handling openstacksdk (>=0.99.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: openstacksdk (>=0.99.0) (installed: openstacksdk 4.0.1) Handling sushy (>=4.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: sushy (>=4.8.0) (installed: sushy 5.2.1) Handling construct (>=2.9.39) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: construct (>=2.9.39) (installed: construct 2.10.70) Handling netaddr from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: netaddr (installed: netaddr 0.10.1) Handling microversion-parse (>=1.0.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: microversion-parse (>=1.0.1) (installed: microversion-parse 2.0.0) Handling virtualbmc (>=1.4.0) ; extra == 'devstack' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: virtualbmc (>=1.4.0) ; extra == 'devstack' Handling oslo.reports (>=1.18.0) ; extra == 'guru_meditation_reports' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.reports (>=1.18.0) ; extra == 'guru_meditation_reports' Handling oslo.i18n (>=3.20.0) ; extra == 'i18n' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.i18n (>=3.20.0) ; extra == 'i18n' Handling coverage (>=4.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: coverage (>=4.0) ; extra == 'test' Handling ddt (>=1.2.1) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: ddt (>=1.2.1) ; extra == 'test' Handling fixtures (>=3.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: fixtures (>=3.0.0) ; extra == 'test' Handling PyMySQL (>=0.8.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: PyMySQL (>=0.8.0) ; extra == 'test' Handling iso8601 (>=0.1.11) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: iso8601 (>=0.1.11) ; extra == 'test' Handling oslo.reports (>=1.18.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.reports (>=1.18.0) ; extra == 'test' Handling oslotest (>=3.2.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslotest (>=3.2.0) ; extra == 'test' Handling stestr (>=2.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: stestr (>=2.0.0) ; extra == 'test' Handling psycopg2 (>=2.8.5) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: psycopg2 (>=2.8.5) ; extra == 'test' Handling testtools (>=2.5.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: testtools (>=2.5.0) ; extra == 'test' Handling WebTest (>=2.0.27) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: WebTest (>=2.0.27) ; extra == 'test' Handling pysnmp-lextudio (>=5.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pysnmp-lextudio (>=5.0.0) ; extra == 'test' Handling pyasn1 (>=0.5.1) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pyasn1 (>=0.5.1) ; extra == 'test' Handling pyasn1-modules (>=0.3.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pyasn1-modules (>=0.3.0) ; extra == 'test' + cat /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires + rm -rfv ironic-26.1.5.dev2.dist-info/ removed 'ironic-26.1.5.dev2.dist-info/LICENSE' removed 'ironic-26.1.5.dev2.dist-info/AUTHORS' removed 'ironic-26.1.5.dev2.dist-info/METADATA' removed 'ironic-26.1.5.dev2.dist-info/top_level.txt' removed 'ironic-26.1.5.dev2.dist-info/pbr.json' removed 'ironic-26.1.5.dev2.dist-info/entry_points.txt' removed directory 'ironic-26.1.5.dev2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. ENTER ['do_with_status'](['bash', '--login', '-c', '/usr/bin/rpmbuild -ba --noprep --target x86_64 /builddir/build/SPECS/openstack-ironic.spec'], chrootPath='/var/lib/mock/dlrn-centos9-dalmatian-x86_64-5/root'env={'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'}shell=Falselogger=timeout=0uid=1038gid=135user='mockbuild'unshare_net=TrueprintOutput=Falsenspawn_args=['--capability=cap_ipc_lock', '--suppress-sync=yes']) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -ba --noprep --target x86_64 /builddir/build/SPECS/openstack-ironic.spec'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/builddir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;\\007"', 'PS1': ' \\s-\\v\\$ ', 'LANG': 'C.UTF-8'} and shell False Building target platforms: x86_64 Building for target x86_64 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.F27tfq + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + '[' -f setup.py ']' + echo 'python3dist(setuptools) >= 40.8' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + echo -n + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + RPM_TOXENV=py39 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires -t -e py39 Handling setuptools >= 40.8 from default build backend Requirement satisfied: setuptools >= 40.8 (installed: setuptools 65.5.1) Handling wheel from get_requires_for_build_wheel Requirement satisfied: wheel (installed: wheel 0.36.2) Handling pbr>=2.0.0 from get_requires_for_build_wheel Requirement satisfied: pbr>=2.0.0 (installed: pbr 6.0.0) Handling tox-current-env >= 0.0.6 from tox itself Requirement satisfied: tox-current-env >= 0.0.6 (installed: tox-current-env 0.0.8) ___________________________________ summary ____________________________________ py39: commands succeeded congratulations :) Handling pbr>=3.1.1 from tox --print-deps-only: py39 Requirement satisfied: pbr>=3.1.1 (installed: pbr 6.0.0) Handling SQLAlchemy>=1.4.0 from tox --print-deps-only: py39 Requirement satisfied: SQLAlchemy>=1.4.0 (installed: SQLAlchemy 2.0.31) Handling alembic>=1.4.2 from tox --print-deps-only: py39 Requirement satisfied: alembic>=1.4.2 (installed: alembic 1.13.2) Handling automaton>=1.9.0 from tox --print-deps-only: py39 Requirement satisfied: automaton>=1.9.0 (installed: automaton 3.2.0) Handling eventlet>=0.30.1 from tox --print-deps-only: py39 Requirement satisfied: eventlet>=0.30.1 (installed: eventlet 0.36.1) Handling WebOb>=1.7.1 from tox --print-deps-only: py39 Requirement satisfied: WebOb>=1.7.1 (installed: WebOb 1.8.8) Handling keystoneauth1>=4.2.0 from tox --print-deps-only: py39 Requirement satisfied: keystoneauth1>=4.2.0 (installed: keystoneauth1 5.8.1) Handling ironic-lib>=6.0.0 from tox --print-deps-only: py39 Requirement satisfied: ironic-lib>=6.0.0 (installed: ironic-lib 6.2.0) Handling stevedore>=1.29.0 from tox --print-deps-only: py39 Requirement satisfied: stevedore>=1.29.0 (installed: stevedore 5.3.0) Handling oslo.concurrency>=4.2.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.concurrency>=4.2.0 (installed: oslo.concurrency 6.1.0) Handling oslo.config>=6.8.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.config>=6.8.0 (installed: oslo.config 9.6.0) Handling oslo.context>=2.22.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.context>=2.22.0 (installed: oslo.context 5.6.0) Handling oslo.db>=9.1.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.db>=9.1.0 (installed: oslo.db 16.0.0) Handling oslo.rootwrap>=5.8.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.rootwrap>=5.8.0 (installed: oslo.rootwrap 7.3.0) Handling oslo.log>=4.3.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.log>=4.3.0 (installed: oslo.log 6.1.2) Handling oslo.middleware>=3.31.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.middleware>=3.31.0 (installed: oslo.middleware 6.2.0) Handling oslo.policy>=4.4.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.policy>=4.4.0 (installed: oslo.policy 4.4.0) Handling oslo.serialization>=2.25.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.serialization>=2.25.0 (installed: oslo.serialization 5.5.0) Handling oslo.service>=1.24.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.service>=1.24.0 (installed: oslo.service 3.5.0) Handling oslo.upgradecheck>=1.3.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.upgradecheck>=1.3.0 (installed: oslo.upgradecheck 2.4.0) Handling oslo.utils>=4.5.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.utils>=4.5.0 (installed: oslo.utils 7.3.1) Handling osprofiler>=1.5.0 from tox --print-deps-only: py39 Requirement satisfied: osprofiler>=1.5.0 (installed: osprofiler 4.2.0) Handling os-traits>=0.4.0 from tox --print-deps-only: py39 Requirement satisfied: os-traits>=0.4.0 (installed: os-traits 3.1.0) Handling pecan>=1.0.0 from tox --print-deps-only: py39 Requirement satisfied: pecan>=1.0.0 (installed: pecan 1.5.1) Handling pycdlib>=1.11.0 from tox --print-deps-only: py39 Requirement satisfied: pycdlib>=1.11.0 (installed: pycdlib 1.11.0) Handling requests>=2.18.0 from tox --print-deps-only: py39 Requirement satisfied: requests>=2.18.0 (installed: requests 2.32.3) Handling rfc3986>=1.2.0 from tox --print-deps-only: py39 Requirement satisfied: rfc3986>=1.2.0 (installed: rfc3986 1.5.0) Handling jsonpatch>=1.16 from tox --print-deps-only: py39 Requirement satisfied: jsonpatch>=1.16 (installed: jsonpatch 1.21) Handling Jinja2>=3.0.0 from tox --print-deps-only: py39 Requirement satisfied: Jinja2>=3.0.0 (installed: Jinja2 3.0.1) Handling keystonemiddleware>=9.5.0 from tox --print-deps-only: py39 Requirement satisfied: keystonemiddleware>=9.5.0 (installed: keystonemiddleware 10.7.1) Handling oslo.messaging>=14.1.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.messaging>=14.1.0 (installed: oslo.messaging 14.9.1) Handling tenacity>=6.3.1 from tox --print-deps-only: py39 Requirement satisfied: tenacity>=6.3.1 (installed: tenacity 8.2.3) Handling oslo.versionedobjects>=1.31.2 from tox --print-deps-only: py39 Requirement satisfied: oslo.versionedobjects>=1.31.2 (installed: oslo.versionedobjects 3.4.0) Handling jsonschema>=4.0.0 from tox --print-deps-only: py39 Requirement satisfied: jsonschema>=4.0.0 (installed: jsonschema 4.16.0) Handling psutil>=3.2.2 from tox --print-deps-only: py39 Requirement satisfied: psutil>=3.2.2 (installed: psutil 5.8.0) Handling futurist>=1.2.0 from tox --print-deps-only: py39 Requirement satisfied: futurist>=1.2.0 (installed: futurist 3.0.0) Handling tooz>=2.7.0 from tox --print-deps-only: py39 Requirement satisfied: tooz>=2.7.0 (installed: tooz 6.3.0) Handling openstacksdk>=0.99.0 from tox --print-deps-only: py39 Requirement satisfied: openstacksdk>=0.99.0 (installed: openstacksdk 4.0.1) Handling sushy>=4.8.0 from tox --print-deps-only: py39 Requirement satisfied: sushy>=4.8.0 (installed: sushy 5.2.1) Handling construct>=2.9.39 from tox --print-deps-only: py39 Requirement satisfied: construct>=2.9.39 (installed: construct 2.10.70) Handling netaddr from tox --print-deps-only: py39 Requirement satisfied: netaddr (installed: netaddr 0.10.1) Handling microversion-parse>=1.0.1 from tox --print-deps-only: py39 Requirement satisfied: microversion-parse>=1.0.1 (installed: microversion-parse 2.0.0) Handling coverage>=4.0 from tox --print-deps-only: py39 Requirement satisfied: coverage>=4.0 (installed: coverage 7.3.2) Handling ddt>=1.2.1 from tox --print-deps-only: py39 Requirement satisfied: ddt>=1.2.1 (installed: ddt 1.6.0) Handling fixtures>=3.0.0 from tox --print-deps-only: py39 Requirement satisfied: fixtures>=3.0.0 (installed: fixtures 4.0.1) Handling PyMySQL>=0.8.0 from tox --print-deps-only: py39 Requirement satisfied: PyMySQL>=0.8.0 (installed: PyMySQL 0.10.1) Handling iso8601>=0.1.11 from tox --print-deps-only: py39 Requirement satisfied: iso8601>=0.1.11 (installed: iso8601 1.1.0) Handling oslo.reports>=1.18.0 from tox --print-deps-only: py39 Requirement satisfied: oslo.reports>=1.18.0 (installed: oslo.reports 3.4.1.dev1) Handling oslotest>=3.2.0 from tox --print-deps-only: py39 Requirement satisfied: oslotest>=3.2.0 (installed: oslotest 5.0.0) Handling stestr>=2.0.0 from tox --print-deps-only: py39 Requirement satisfied: stestr>=2.0.0 (installed: stestr 4.1.0) Handling psycopg2>=2.8.5 from tox --print-deps-only: py39 Requirement satisfied: psycopg2>=2.8.5 (installed: psycopg2 2.9.9) Handling testtools>=2.5.0 from tox --print-deps-only: py39 Requirement satisfied: testtools>=2.5.0 (installed: testtools 2.7.1) Handling WebTest>=2.0.27 from tox --print-deps-only: py39 Requirement satisfied: WebTest>=2.0.27 (installed: WebTest 3.0.0) Handling pysnmp-lextudio>=5.0.0 from tox --print-deps-only: py39 Requirement satisfied: pysnmp-lextudio>=5.0.0 (installed: pysnmp-lextudio 5.0.26) Handling pyasn1>=0.5.1 from tox --print-deps-only: py39 Requirement satisfied: pyasn1>=0.5.1 (installed: pyasn1 0.6.0) Handling pyasn1-modules>=0.3.0 from tox --print-deps-only: py39 Requirement satisfied: pyasn1-modules>=0.3.0 (installed: pyasn1-modules 0.4.0) /usr/lib/python3.9/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( /usr/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( running dist_info writing ironic.egg-info/PKG-INFO writing dependency_links to ironic.egg-info/dependency_links.txt writing entry points to ironic.egg-info/entry_points.txt writing requirements to ironic.egg-info/requires.txt writing top-level names to ironic.egg-info/top_level.txt writing pbr to ironic.egg-info/pbr.json [pbr] Processing SOURCES.txt [pbr] In git context, generating filelist from git warning: no previously-included files found matching '.gitignore' warning: no previously-included files found matching '.gitreview' warning: no previously-included files matching '*.pyc' found anywhere in distribution adding license file 'LICENSE' adding license file 'AUTHORS' writing manifest file 'ironic.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/ironic-26.1.5.dev2/ironic-26.1.5.dev2.dist-info' adding license file "LICENSE" (matched pattern "LICEN[CS]E*") adding license file "AUTHORS" (matched pattern "AUTHORS*") Handling pbr (>=3.1.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: pbr (>=3.1.1) (installed: pbr 6.0.0) Handling SQLAlchemy (>=1.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: SQLAlchemy (>=1.4.0) (installed: SQLAlchemy 2.0.31) Handling alembic (>=1.4.2) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: alembic (>=1.4.2) (installed: alembic 1.13.2) Handling automaton (>=1.9.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: automaton (>=1.9.0) (installed: automaton 3.2.0) Handling eventlet (>=0.30.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: eventlet (>=0.30.1) (installed: eventlet 0.36.1) Handling WebOb (>=1.7.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: WebOb (>=1.7.1) (installed: WebOb 1.8.8) Handling keystoneauth1 (>=4.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: keystoneauth1 (>=4.2.0) (installed: keystoneauth1 5.8.1) Handling ironic-lib (>=6.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: ironic-lib (>=6.0.0) (installed: ironic-lib 6.2.0) Handling stevedore (>=1.29.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: stevedore (>=1.29.0) (installed: stevedore 5.3.0) Handling oslo.concurrency (>=4.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.concurrency (>=4.2.0) (installed: oslo.concurrency 6.1.0) Handling oslo.config (>=6.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.config (>=6.8.0) (installed: oslo.config 9.6.0) Handling oslo.context (>=2.22.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.context (>=2.22.0) (installed: oslo.context 5.6.0) Handling oslo.db (>=9.1.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.db (>=9.1.0) (installed: oslo.db 16.0.0) Handling oslo.rootwrap (>=5.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.rootwrap (>=5.8.0) (installed: oslo.rootwrap 7.3.0) Handling oslo.log (>=4.3.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.log (>=4.3.0) (installed: oslo.log 6.1.2) Handling oslo.middleware (>=3.31.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.middleware (>=3.31.0) (installed: oslo.middleware 6.2.0) Handling oslo.policy (>=4.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.policy (>=4.4.0) (installed: oslo.policy 4.4.0) Handling oslo.serialization (>=2.25.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.serialization (>=2.25.0) (installed: oslo.serialization 5.5.0) Handling oslo.service (>=1.24.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.service (>=1.24.0) (installed: oslo.service 3.5.0) Handling oslo.upgradecheck (>=1.3.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.upgradecheck (>=1.3.0) (installed: oslo.upgradecheck 2.4.0) Handling oslo.utils (>=4.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.utils (>=4.5.0) (installed: oslo.utils 7.3.1) Handling osprofiler (>=1.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: osprofiler (>=1.5.0) (installed: osprofiler 4.2.0) Handling os-traits (>=0.4.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: os-traits (>=0.4.0) (installed: os-traits 3.1.0) Handling pecan (>=1.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: pecan (>=1.0.0) (installed: pecan 1.5.1) Handling pycdlib (>=1.11.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: pycdlib (>=1.11.0) (installed: pycdlib 1.11.0) Handling requests (>=2.18.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: requests (>=2.18.0) (installed: requests 2.32.3) Handling rfc3986 (>=1.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: rfc3986 (>=1.2.0) (installed: rfc3986 1.5.0) Handling jsonpatch (>=1.16) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: jsonpatch (>=1.16) (installed: jsonpatch 1.21) Handling Jinja2 (>=3.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: Jinja2 (>=3.0.0) (installed: Jinja2 3.0.1) Handling keystonemiddleware (>=9.5.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: keystonemiddleware (>=9.5.0) (installed: keystonemiddleware 10.7.1) Handling oslo.messaging (>=14.1.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.messaging (>=14.1.0) (installed: oslo.messaging 14.9.1) Handling tenacity (>=6.3.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: tenacity (>=6.3.1) (installed: tenacity 8.2.3) Handling oslo.versionedobjects (>=1.31.2) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: oslo.versionedobjects (>=1.31.2) (installed: oslo.versionedobjects 3.4.0) Handling jsonschema (>=4.0.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: jsonschema (>=4.0.0) (installed: jsonschema 4.16.0) Handling psutil (>=3.2.2) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: psutil (>=3.2.2) (installed: psutil 5.8.0) Handling futurist (>=1.2.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: futurist (>=1.2.0) (installed: futurist 3.0.0) Handling tooz (>=2.7.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: tooz (>=2.7.0) (installed: tooz 6.3.0) Handling openstacksdk (>=0.99.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: openstacksdk (>=0.99.0) (installed: openstacksdk 4.0.1) Handling sushy (>=4.8.0) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: sushy (>=4.8.0) (installed: sushy 5.2.1) Handling construct (>=2.9.39) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: construct (>=2.9.39) (installed: construct 2.10.70) Handling netaddr from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: netaddr (installed: netaddr 0.10.1) Handling microversion-parse (>=1.0.1) from hook generated metadata: Requires-Dist (ironic) Requirement satisfied: microversion-parse (>=1.0.1) (installed: microversion-parse 2.0.0) Handling virtualbmc (>=1.4.0) ; extra == 'devstack' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: virtualbmc (>=1.4.0) ; extra == 'devstack' Handling oslo.reports (>=1.18.0) ; extra == 'guru_meditation_reports' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.reports (>=1.18.0) ; extra == 'guru_meditation_reports' Handling oslo.i18n (>=3.20.0) ; extra == 'i18n' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.i18n (>=3.20.0) ; extra == 'i18n' Handling coverage (>=4.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: coverage (>=4.0) ; extra == 'test' Handling ddt (>=1.2.1) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: ddt (>=1.2.1) ; extra == 'test' Handling fixtures (>=3.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: fixtures (>=3.0.0) ; extra == 'test' Handling PyMySQL (>=0.8.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: PyMySQL (>=0.8.0) ; extra == 'test' Handling iso8601 (>=0.1.11) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: iso8601 (>=0.1.11) ; extra == 'test' Handling oslo.reports (>=1.18.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslo.reports (>=1.18.0) ; extra == 'test' Handling oslotest (>=3.2.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: oslotest (>=3.2.0) ; extra == 'test' Handling stestr (>=2.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: stestr (>=2.0.0) ; extra == 'test' Handling psycopg2 (>=2.8.5) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: psycopg2 (>=2.8.5) ; extra == 'test' Handling testtools (>=2.5.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: testtools (>=2.5.0) ; extra == 'test' Handling WebTest (>=2.0.27) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: WebTest (>=2.0.27) ; extra == 'test' Handling pysnmp-lextudio (>=5.0.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pysnmp-lextudio (>=5.0.0) ; extra == 'test' Handling pyasn1 (>=0.5.1) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pyasn1 (>=0.5.1) ; extra == 'test' Handling pyasn1-modules (>=0.3.0) ; extra == 'test' from hook generated metadata: Requires-Dist (ironic) Ignoring alien requirement: pyasn1-modules (>=0.3.0) ; extra == 'test' + cat /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-buildrequires + rm -rfv ironic-26.1.5.dev2.dist-info/ removed 'ironic-26.1.5.dev2.dist-info/AUTHORS' removed 'ironic-26.1.5.dev2.dist-info/LICENSE' removed 'ironic-26.1.5.dev2.dist-info/METADATA' removed 'ironic-26.1.5.dev2.dist-info/entry_points.txt' removed 'ironic-26.1.5.dev2.dist-info/pbr.json' removed 'ironic-26.1.5.dev2.dist-info/top_level.txt' removed directory 'ironic-26.1.5.dev2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.UK3qiU + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + mkdir -p /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + CXXFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + FFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + FCFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -I/usr/lib64/gfortran/modules' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir Processing /builddir/build/BUILD/ironic-26.1.5.dev2 Preparing metadata (pyproject.toml): started Running command /usr/bin/python3 /usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py prepare_metadata_for_build_wheel /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/tmpcml1s2ms /usr/lib/python3.9/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( /usr/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools. warnings.warn( running dist_info creating /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info writing /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info/PKG-INFO writing dependency_links to /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info/dependency_links.txt writing entry points to /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info/entry_points.txt writing requirements to /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info/requires.txt writing top-level names to /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info/top_level.txt writing pbr to /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info/pbr.json [pbr] Processing SOURCES.txt writing manifest file '/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info/SOURCES.txt' [pbr] In git context, generating filelist from git warning: no previously-included files found matching '.gitignore' warning: no previously-included files found matching '.gitreview' warning: no previously-included files matching '*.pyc' found anywhere in distribution adding license file 'LICENSE' adding license file 'AUTHORS' writing manifest file '/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-modern-metadata-yagt4ocp/ironic-26.1.5.dev2.dist-info' adding license file "LICENSE" (matched pattern "LICEN[CS]E*") adding license file "AUTHORS" (matched pattern "AUTHORS*") Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: ironic Building wheel for ironic (pyproject.toml): started Running command /usr/bin/python3 /usr/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/tmp319h2p1b /usr/lib/python3.9/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools. warnings.warn( running bdist_wheel running build running build_py creating build creating build/lib creating build/lib/ironic creating build/lib/ironic/tests creating build/lib/ironic/tests/unit copying ironic/tests/unit/test_base.py -> build/lib/ironic/tests/unit copying ironic/tests/unit/stubs.py -> build/lib/ironic/tests/unit copying ironic/tests/unit/raid_constants.py -> build/lib/ironic/tests/unit copying ironic/tests/unit/policy_fixture.py -> build/lib/ironic/tests/unit copying ironic/tests/unit/__init__.py -> build/lib/ironic/tests/unit creating build/lib/ironic/tests/unit/drivers creating build/lib/ironic/tests/unit/drivers/modules creating build/lib/ironic/tests/unit/drivers/modules/drac copying ironic/tests/unit/drivers/modules/drac/utils.py -> build/lib/ironic/tests/unit/drivers/modules/drac copying ironic/tests/unit/drivers/modules/drac/test_utils.py -> build/lib/ironic/tests/unit/drivers/modules/drac copying ironic/tests/unit/drivers/modules/drac/test_raid.py -> build/lib/ironic/tests/unit/drivers/modules/drac copying ironic/tests/unit/drivers/modules/drac/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/drac copying ironic/tests/unit/drivers/modules/drac/test_inspect.py -> build/lib/ironic/tests/unit/drivers/modules/drac copying ironic/tests/unit/drivers/modules/drac/test_boot.py -> build/lib/ironic/tests/unit/drivers/modules/drac copying ironic/tests/unit/drivers/modules/drac/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/drac creating build/lib/ironic/drivers creating build/lib/ironic/drivers/modules creating build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/vendor.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/utils.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/raid.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/power.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/management.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/inspect.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/firmware_utils.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/firmware.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/boot.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/bios.py -> build/lib/ironic/drivers/modules/redfish copying ironic/drivers/modules/redfish/__init__.py -> build/lib/ironic/drivers/modules/redfish creating build/lib/ironic/tests/unit/api creating build/lib/ironic/tests/unit/api/controllers creating build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_volume_target.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_volume_connector.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_volume.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_versions.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_utils.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_shard.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_runbook.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_root.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_ramdisk.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_portgroup.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_port.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_notification_utils.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_node.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_event.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_driver.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_deploy_template.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_conductor.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_collection.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_chassis.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/test_allocation.py -> build/lib/ironic/tests/unit/api/controllers/v1 copying ironic/tests/unit/api/controllers/v1/__init__.py -> build/lib/ironic/tests/unit/api/controllers/v1 creating build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_wsgi_service.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_utils.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_swift.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_states.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_rpc.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_release_mappings.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_raid.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_qemu_img.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_pxe_utils.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_policy.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_nova.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_neutron.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_network.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_molds.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_kickstart_utils.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_keystone.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_images.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_image_service.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_image_publisher.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_hash_ring.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_glance_service.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_fsm.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_format_inspector.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_driver_factory.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_context.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_cinder.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_checksum_utils.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/test_args.py -> build/lib/ironic/tests/unit/common copying ironic/tests/unit/common/__init__.py -> build/lib/ironic/tests/unit/common creating build/lib/ironic/drivers/modules/network copying ironic/drivers/modules/network/noop.py -> build/lib/ironic/drivers/modules/network copying ironic/drivers/modules/network/neutron.py -> build/lib/ironic/drivers/modules/network copying ironic/drivers/modules/network/flat.py -> build/lib/ironic/drivers/modules/network copying ironic/drivers/modules/network/common.py -> build/lib/ironic/drivers/modules/network copying ironic/drivers/modules/network/__init__.py -> build/lib/ironic/drivers/modules/network creating build/lib/ironic/tests/unit/db creating build/lib/ironic/tests/unit/db/sqlalchemy copying ironic/tests/unit/db/sqlalchemy/test_types.py -> build/lib/ironic/tests/unit/db/sqlalchemy copying ironic/tests/unit/db/sqlalchemy/test_models.py -> build/lib/ironic/tests/unit/db/sqlalchemy copying ironic/tests/unit/db/sqlalchemy/test_migrations.py -> build/lib/ironic/tests/unit/db/sqlalchemy copying ironic/tests/unit/db/sqlalchemy/test_api.py -> build/lib/ironic/tests/unit/db/sqlalchemy copying ironic/tests/unit/db/sqlalchemy/__init__.py -> build/lib/ironic/tests/unit/db/sqlalchemy copying ironic/tests/unit/api/controllers/test_base.py -> build/lib/ironic/tests/unit/api/controllers copying ironic/tests/unit/api/controllers/__init__.py -> build/lib/ironic/tests/unit/api/controllers creating build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_vendor.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_utils.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_raid.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_power.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_inspect.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_firmware.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_boot.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/test_bios.py -> build/lib/ironic/tests/unit/drivers/modules/redfish copying ironic/tests/unit/drivers/modules/redfish/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/redfish creating build/lib/ironic/cmd copying ironic/cmd/status.py -> build/lib/ironic/cmd copying ironic/cmd/singleprocess.py -> build/lib/ironic/cmd copying ironic/cmd/pxe_filter.py -> build/lib/ironic/cmd copying ironic/cmd/dbsync.py -> build/lib/ironic/cmd copying ironic/cmd/conductor.py -> build/lib/ironic/cmd copying ironic/cmd/api.py -> build/lib/ironic/cmd copying ironic/cmd/__init__.py -> build/lib/ironic/cmd creating build/lib/ironic/drivers/modules/xclarity copying ironic/drivers/modules/xclarity/__init__.py -> build/lib/ironic/drivers/modules/xclarity creating build/lib/ironic/drivers/modules/storage copying ironic/drivers/modules/storage/noop.py -> build/lib/ironic/drivers/modules/storage copying ironic/drivers/modules/storage/external.py -> build/lib/ironic/drivers/modules/storage copying ironic/drivers/modules/storage/cinder.py -> build/lib/ironic/drivers/modules/storage copying ironic/drivers/modules/storage/__init__.py -> build/lib/ironic/drivers/modules/storage creating build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/vendor.py -> build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/raid.py -> build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/power.py -> build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/management.py -> build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/inspect.py -> build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/common.py -> build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/boot.py -> build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/bios.py -> build/lib/ironic/drivers/modules/irmc copying ironic/drivers/modules/irmc/__init__.py -> build/lib/ironic/drivers/modules/irmc creating build/lib/ironic/tests/unit/conf copying ironic/tests/unit/conf/test_types.py -> build/lib/ironic/tests/unit/conf copying ironic/tests/unit/conf/test_conductor.py -> build/lib/ironic/tests/unit/conf copying ironic/tests/unit/conf/test_auth.py -> build/lib/ironic/tests/unit/conf copying ironic/tests/unit/conf/__init__.py -> build/lib/ironic/tests/unit/conf creating build/lib/ironic/drivers/modules/ibmc copying ironic/drivers/modules/ibmc/__init__.py -> build/lib/ironic/drivers/modules/ibmc creating build/lib/ironic/tests/unit/drivers/modules/network copying ironic/tests/unit/drivers/modules/network/test_noop.py -> build/lib/ironic/tests/unit/drivers/modules/network copying ironic/tests/unit/drivers/modules/network/test_neutron.py -> build/lib/ironic/tests/unit/drivers/modules/network copying ironic/tests/unit/drivers/modules/network/test_flat.py -> build/lib/ironic/tests/unit/drivers/modules/network copying ironic/tests/unit/drivers/modules/network/test_common.py -> build/lib/ironic/tests/unit/drivers/modules/network copying ironic/tests/unit/drivers/modules/network/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/network copying ironic/version.py -> build/lib/ironic copying ironic/__init__.py -> build/lib/ironic creating build/lib/ironic/api copying ironic/api/wsgi.py -> build/lib/ironic/api copying ironic/api/method.py -> build/lib/ironic/api copying ironic/api/hooks.py -> build/lib/ironic/api copying ironic/api/functions.py -> build/lib/ironic/api copying ironic/api/config.py -> build/lib/ironic/api copying ironic/api/app.py -> build/lib/ironic/api copying ironic/api/__init__.py -> build/lib/ironic/api copying ironic/tests/unit/db/utils.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_volume_targets.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_volume_connectors.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_shard.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_runbooks.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_ports.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_portgroups.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_nodes.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_node_traits.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_node_tags.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_node_inventory.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_node_history.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_firmware_component.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_deploy_templates.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_conductor.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_chassis.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_bios_settings.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_api.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/test_allocations.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/base.py -> build/lib/ironic/tests/unit/db copying ironic/tests/unit/db/__init__.py -> build/lib/ironic/tests/unit/db creating build/lib/ironic/conductor copying ironic/conductor/verify.py -> build/lib/ironic/conductor copying ironic/conductor/utils.py -> build/lib/ironic/conductor copying ironic/conductor/task_manager.py -> build/lib/ironic/conductor copying ironic/conductor/steps.py -> build/lib/ironic/conductor copying ironic/conductor/servicing.py -> build/lib/ironic/conductor copying ironic/conductor/rpcapi.py -> build/lib/ironic/conductor copying ironic/conductor/rpc_service.py -> build/lib/ironic/conductor copying ironic/conductor/periodics.py -> build/lib/ironic/conductor copying ironic/conductor/notification_utils.py -> build/lib/ironic/conductor copying ironic/conductor/manager.py -> build/lib/ironic/conductor copying ironic/conductor/inspection.py -> build/lib/ironic/conductor copying ironic/conductor/deployments.py -> build/lib/ironic/conductor copying ironic/conductor/cleaning.py -> build/lib/ironic/conductor copying ironic/conductor/base_manager.py -> build/lib/ironic/conductor copying ironic/conductor/allocations.py -> build/lib/ironic/conductor copying ironic/conductor/__init__.py -> build/lib/ironic/conductor creating build/lib/ironic/db creating build/lib/ironic/db/sqlalchemy copying ironic/db/sqlalchemy/models.py -> build/lib/ironic/db/sqlalchemy copying ironic/db/sqlalchemy/migration.py -> build/lib/ironic/db/sqlalchemy copying ironic/db/sqlalchemy/api.py -> build/lib/ironic/db/sqlalchemy copying ironic/db/sqlalchemy/__init__.py -> build/lib/ironic/db/sqlalchemy creating build/lib/ironic/common copying ironic/common/wsgi_service.py -> build/lib/ironic/common copying ironic/common/utils.py -> build/lib/ironic/common copying ironic/common/swift.py -> build/lib/ironic/common copying ironic/common/states.py -> build/lib/ironic/common copying ironic/common/service.py -> build/lib/ironic/common copying ironic/common/rpc_service.py -> build/lib/ironic/common copying ironic/common/rpc.py -> build/lib/ironic/common copying ironic/common/release_mappings.py -> build/lib/ironic/common copying ironic/common/raid.py -> build/lib/ironic/common copying ironic/common/qemu_img.py -> build/lib/ironic/common copying ironic/common/pxe_utils.py -> build/lib/ironic/common copying ironic/common/profiler.py -> build/lib/ironic/common copying ironic/common/policy.py -> build/lib/ironic/common copying ironic/common/nova.py -> build/lib/ironic/common copying ironic/common/neutron.py -> build/lib/ironic/common copying ironic/common/network.py -> build/lib/ironic/common copying ironic/common/molds.py -> build/lib/ironic/common copying ironic/common/lessee_sources.py -> build/lib/ironic/common copying ironic/common/kickstart_utils.py -> build/lib/ironic/common copying ironic/common/keystone.py -> build/lib/ironic/common copying ironic/common/indicator_states.py -> build/lib/ironic/common copying ironic/common/images.py -> build/lib/ironic/common copying ironic/common/image_service.py -> build/lib/ironic/common copying ironic/common/image_publisher.py -> build/lib/ironic/common copying ironic/common/image_format_inspector.py -> build/lib/ironic/common copying ironic/common/i18n.py -> build/lib/ironic/common copying ironic/common/hash_ring.py -> build/lib/ironic/common copying ironic/common/fsm.py -> build/lib/ironic/common copying ironic/common/faults.py -> build/lib/ironic/common copying ironic/common/exception.py -> build/lib/ironic/common copying ironic/common/driver_factory.py -> build/lib/ironic/common copying ironic/common/dhcp_factory.py -> build/lib/ironic/common copying ironic/common/context.py -> build/lib/ironic/common copying ironic/common/config.py -> build/lib/ironic/common copying ironic/common/components.py -> build/lib/ironic/common copying ironic/common/cinder.py -> build/lib/ironic/common copying ironic/common/checksum_utils.py -> build/lib/ironic/common copying ironic/common/boot_modes.py -> build/lib/ironic/common copying ironic/common/boot_devices.py -> build/lib/ironic/common copying ironic/common/async_steps.py -> build/lib/ironic/common copying ironic/common/args.py -> build/lib/ironic/common copying ironic/common/__init__.py -> build/lib/ironic/common creating build/lib/ironic/pxe_filter copying ironic/pxe_filter/service.py -> build/lib/ironic/pxe_filter copying ironic/pxe_filter/dnsmasq.py -> build/lib/ironic/pxe_filter copying ironic/pxe_filter/__init__.py -> build/lib/ironic/pxe_filter creating build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/vendor.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/raid.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/power.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/management.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/inspect.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/firmware_processor.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/console.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/common.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/boot.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/bios.py -> build/lib/ironic/drivers/modules/ilo copying ironic/drivers/modules/ilo/__init__.py -> build/lib/ironic/drivers/modules/ilo creating build/lib/ironic/hacking copying ironic/hacking/checks.py -> build/lib/ironic/hacking copying ironic/hacking/__init__.py -> build/lib/ironic/hacking creating build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_verify.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_utils.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_task_manager.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_steps.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_servicing.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_rpcapi.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_rpc_service.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_periodics.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_notification_utils.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_manager.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_inspection.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_deployments.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_cleaning.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_base_manager.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/test_allocations.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/mgr_utils.py -> build/lib/ironic/tests/unit/conductor copying ironic/tests/unit/conductor/__init__.py -> build/lib/ironic/tests/unit/conductor creating build/lib/ironic/dhcp copying ironic/dhcp/none.py -> build/lib/ironic/dhcp copying ironic/dhcp/neutron.py -> build/lib/ironic/dhcp copying ironic/dhcp/dnsmasq.py -> build/lib/ironic/dhcp copying ironic/dhcp/base.py -> build/lib/ironic/dhcp copying ironic/dhcp/__init__.py -> build/lib/ironic/dhcp creating build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/utils.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_volume_target.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_volume_connector.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_trait.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_portgroup.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_port.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_objects.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_notification.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_node_inventory.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_node_history.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_node.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_firmware.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_fields.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_deployment.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_deploy_template.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_conductor.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_chassis.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_bios.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/test_allocation.py -> build/lib/ironic/tests/unit/objects copying ironic/tests/unit/objects/__init__.py -> build/lib/ironic/tests/unit/objects creating build/lib/ironic/tests/unit/drivers/modules/xclarity copying ironic/tests/unit/drivers/modules/xclarity/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/xclarity creating build/lib/ironic/tests/unit/drivers/modules/intel_ipmi copying ironic/tests/unit/drivers/modules/intel_ipmi/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/intel_ipmi copying ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py -> build/lib/ironic/tests/unit/drivers/modules/intel_ipmi copying ironic/tests/unit/drivers/modules/intel_ipmi/base.py -> build/lib/ironic/tests/unit/drivers/modules/intel_ipmi copying ironic/tests/unit/drivers/modules/intel_ipmi/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/intel_ipmi copying ironic/db/migration.py -> build/lib/ironic/db copying ironic/db/api.py -> build/lib/ironic/db copying ironic/db/__init__.py -> build/lib/ironic/db creating build/lib/ironic/tests/unit/drivers/modules/storage copying ironic/tests/unit/drivers/modules/storage/test_external.py -> build/lib/ironic/tests/unit/drivers/modules/storage copying ironic/tests/unit/drivers/modules/storage/test_cinder.py -> build/lib/ironic/tests/unit/drivers/modules/storage copying ironic/tests/unit/drivers/modules/storage/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/storage creating build/lib/ironic/drivers/modules/inspector copying ironic/drivers/modules/inspector/lldp_tlvs.py -> build/lib/ironic/drivers/modules/inspector copying ironic/drivers/modules/inspector/lldp_parsers.py -> build/lib/ironic/drivers/modules/inspector copying ironic/drivers/modules/inspector/interface.py -> build/lib/ironic/drivers/modules/inspector copying ironic/drivers/modules/inspector/client.py -> build/lib/ironic/drivers/modules/inspector copying ironic/drivers/modules/inspector/agent.py -> build/lib/ironic/drivers/modules/inspector copying ironic/drivers/modules/inspector/__init__.py -> build/lib/ironic/drivers/modules/inspector copying ironic/tests/unit/drivers/modules/test_snmp.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_ramdisk.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_pxe.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_noop_mgmt.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_noop.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_ipxe.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_ipmitool.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_inspect_utils.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_image_utils.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_image_cache.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_deploy_utils.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_console_utils.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_boot_mode_utils.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_agent_power.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_agent_client.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_agent_base.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/test_agent.py -> build/lib/ironic/tests/unit/drivers/modules copying ironic/tests/unit/drivers/modules/__init__.py -> build/lib/ironic/tests/unit/drivers/modules creating build/lib/ironic/tests/unit/drivers/modules/inspector creating build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_validate_interfaces.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_root_device.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_ramdisk_error.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_raid_device.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_ports.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_physical_network.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_pci_devices.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_parse_lldp.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_memory.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_local_link_connection.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_extra_hardware.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_cpu_capabilities.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_boot_mode.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_architecture.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/test_accelerators.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/modules/inspector/hooks/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/inspector/hooks creating build/lib/ironic/tests/unit/cmd copying ironic/tests/unit/cmd/test_status.py -> build/lib/ironic/tests/unit/cmd copying ironic/tests/unit/cmd/test_dbsync.py -> build/lib/ironic/tests/unit/cmd copying ironic/tests/unit/cmd/test_conductor.py -> build/lib/ironic/tests/unit/cmd copying ironic/tests/unit/cmd/__init__.py -> build/lib/ironic/tests/unit/cmd creating build/lib/ironic/api/controllers creating build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/volume_target.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/volume_connector.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/volume.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/versions.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/utils.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/shard.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/runbook.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/ramdisk.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/portgroup.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/port.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/notification_utils.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/node.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/firmware.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/event.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/driver.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/deploy_template.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/conductor.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/collection.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/chassis.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/bios.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/allocation.py -> build/lib/ironic/api/controllers/v1 copying ironic/api/controllers/v1/__init__.py -> build/lib/ironic/api/controllers/v1 creating build/lib/ironic/tests/unit/drivers/modules/ibmc copying ironic/tests/unit/drivers/modules/ibmc/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc copying ironic/drivers/utils.py -> build/lib/ironic/drivers copying ironic/drivers/snmp.py -> build/lib/ironic/drivers copying ironic/drivers/redfish.py -> build/lib/ironic/drivers copying ironic/drivers/irmc.py -> build/lib/ironic/drivers copying ironic/drivers/ipmi.py -> build/lib/ironic/drivers copying ironic/drivers/intel_ipmi.py -> build/lib/ironic/drivers copying ironic/drivers/ilo.py -> build/lib/ironic/drivers copying ironic/drivers/hardware_type.py -> build/lib/ironic/drivers copying ironic/drivers/generic.py -> build/lib/ironic/drivers copying ironic/drivers/fake_hardware.py -> build/lib/ironic/drivers copying ironic/drivers/drac.py -> build/lib/ironic/drivers copying ironic/drivers/base.py -> build/lib/ironic/drivers copying ironic/drivers/__init__.py -> build/lib/ironic/drivers creating build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_vendor.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_raid.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_power.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_inspect.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_firmware_processor.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_console.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_common.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_boot.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/test_bios.py -> build/lib/ironic/tests/unit/drivers/modules/ilo copying ironic/tests/unit/drivers/modules/ilo/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/ilo creating build/lib/ironic/drivers/modules/ansible copying ironic/drivers/modules/ansible/deploy.py -> build/lib/ironic/drivers/modules/ansible copying ironic/drivers/modules/ansible/__init__.py -> build/lib/ironic/drivers/modules/ansible creating build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/validate_interfaces.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/root_device.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/ramdisk_error.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/raid_device.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/ports.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/physical_network.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/pci_devices.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/parse_lldp.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/memory.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/local_link_connection.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/extra_hardware.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/cpu_capabilities.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/boot_mode.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/base.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/architecture.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/accelerators.py -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/drivers/modules/inspector/hooks/__init__.py -> build/lib/ironic/drivers/modules/inspector/hooks creating build/lib/ironic/tests/unit/pxe_filter copying ironic/tests/unit/pxe_filter/test_service.py -> build/lib/ironic/tests/unit/pxe_filter copying ironic/tests/unit/pxe_filter/test_dnsmasq.py -> build/lib/ironic/tests/unit/pxe_filter copying ironic/tests/unit/pxe_filter/__init__.py -> build/lib/ironic/tests/unit/pxe_filter copying ironic/tests/unit/drivers/third_party_driver_mocks.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/third_party_driver_mock_specs.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_utils.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_snmp.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_redfish.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_irmc.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_ipmi.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_ilo.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_generic.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_fake_hardware.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_drac.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/test_base.py -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/__init__.py -> build/lib/ironic/tests/unit/drivers creating build/lib/ironic/objects copying ironic/objects/volume_target.py -> build/lib/ironic/objects copying ironic/objects/volume_connector.py -> build/lib/ironic/objects copying ironic/objects/trait.py -> build/lib/ironic/objects copying ironic/objects/runbook.py -> build/lib/ironic/objects copying ironic/objects/portgroup.py -> build/lib/ironic/objects copying ironic/objects/port.py -> build/lib/ironic/objects copying ironic/objects/notification.py -> build/lib/ironic/objects copying ironic/objects/node_inventory.py -> build/lib/ironic/objects copying ironic/objects/node_history.py -> build/lib/ironic/objects copying ironic/objects/node.py -> build/lib/ironic/objects copying ironic/objects/indirection.py -> build/lib/ironic/objects copying ironic/objects/firmware.py -> build/lib/ironic/objects copying ironic/objects/fields.py -> build/lib/ironic/objects copying ironic/objects/deployment.py -> build/lib/ironic/objects copying ironic/objects/deploy_template.py -> build/lib/ironic/objects copying ironic/objects/conductor.py -> build/lib/ironic/objects copying ironic/objects/chassis.py -> build/lib/ironic/objects copying ironic/objects/bios.py -> build/lib/ironic/objects copying ironic/objects/base.py -> build/lib/ironic/objects copying ironic/objects/allocation.py -> build/lib/ironic/objects copying ironic/objects/__init__.py -> build/lib/ironic/objects creating build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/test_raid.py -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/test_power.py -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/test_periodic_task.py -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/test_management.py -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/test_inspect.py -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/test_common.py -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/test_boot.py -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/test_bios.py -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/irmc creating build/lib/ironic/tests/functional copying ironic/tests/functional/__init__.py -> build/lib/ironic/tests/functional creating build/lib/ironic/tests/unit/drivers/modules/ansible copying ironic/tests/unit/drivers/modules/ansible/test_deploy.py -> build/lib/ironic/tests/unit/drivers/modules/ansible copying ironic/tests/unit/drivers/modules/ansible/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/ansible copying ironic/tests/unit/drivers/modules/inspector/test_interface.py -> build/lib/ironic/tests/unit/drivers/modules/inspector copying ironic/tests/unit/drivers/modules/inspector/test_client.py -> build/lib/ironic/tests/unit/drivers/modules/inspector copying ironic/tests/unit/drivers/modules/inspector/test_agent.py -> build/lib/ironic/tests/unit/drivers/modules/inspector copying ironic/tests/unit/drivers/modules/inspector/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/inspector copying ironic/tests/unit/api/utils.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_root.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_proxy_middleware.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_ospmiddleware.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_middleware.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_method.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_hooks.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_healthcheck.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_functions.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_audit.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_acl.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/base.py -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/__init__.py -> build/lib/ironic/tests/unit/api creating build/lib/ironic/tests/unit/dhcp copying ironic/tests/unit/dhcp/test_neutron.py -> build/lib/ironic/tests/unit/dhcp copying ironic/tests/unit/dhcp/test_factory.py -> build/lib/ironic/tests/unit/dhcp copying ironic/tests/unit/dhcp/test_dnsmasq.py -> build/lib/ironic/tests/unit/dhcp copying ironic/tests/unit/dhcp/__init__.py -> build/lib/ironic/tests/unit/dhcp copying ironic/drivers/modules/snmp.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/ramdisk.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/pxe_base.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/pxe.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/noop_mgmt.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/noop.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/ipxe.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/ipmitool.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/inspect_utils.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/image_utils.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/image_cache.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/fake.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/deploy_utils.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/console_utils.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/boot_mode_utils.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/agent_power.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/agent_client.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/agent_base.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/agent.py -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/__init__.py -> build/lib/ironic/drivers/modules copying ironic/tests/base.py -> build/lib/ironic/tests copying ironic/tests/__init__.py -> build/lib/ironic/tests creating build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/vendor_passthru.py -> build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/utils.py -> build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/raid.py -> build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/power.py -> build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/management.py -> build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/inspect.py -> build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/boot.py -> build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/bios.py -> build/lib/ironic/drivers/modules/drac copying ironic/drivers/modules/drac/__init__.py -> build/lib/ironic/drivers/modules/drac creating build/lib/ironic/common/glance_service copying ironic/common/glance_service/service_utils.py -> build/lib/ironic/common/glance_service copying ironic/common/glance_service/image_service.py -> build/lib/ironic/common/glance_service copying ironic/common/glance_service/__init__.py -> build/lib/ironic/common/glance_service creating build/lib/ironic/api/middleware copying ironic/api/middleware/parsable_error.py -> build/lib/ironic/api/middleware copying ironic/api/middleware/json_ext.py -> build/lib/ironic/api/middleware copying ironic/api/middleware/auth_public_routes.py -> build/lib/ironic/api/middleware copying ironic/api/middleware/__init__.py -> build/lib/ironic/api/middleware creating build/lib/ironic/drivers/modules/intel_ipmi copying ironic/drivers/modules/intel_ipmi/management.py -> build/lib/ironic/drivers/modules/intel_ipmi copying ironic/drivers/modules/intel_ipmi/__init__.py -> build/lib/ironic/drivers/modules/intel_ipmi creating build/lib/ironic/conf copying ironic/conf/types.py -> build/lib/ironic/conf copying ironic/conf/swift.py -> build/lib/ironic/conf copying ironic/conf/snmp.py -> build/lib/ironic/conf copying ironic/conf/service_catalog.py -> build/lib/ironic/conf copying ironic/conf/sensor_data.py -> build/lib/ironic/conf copying ironic/conf/redfish.py -> build/lib/ironic/conf copying ironic/conf/pxe.py -> build/lib/ironic/conf copying ironic/conf/opts.py -> build/lib/ironic/conf copying ironic/conf/nova.py -> build/lib/ironic/conf copying ironic/conf/neutron.py -> build/lib/ironic/conf copying ironic/conf/molds.py -> build/lib/ironic/conf copying ironic/conf/metrics_statsd.py -> build/lib/ironic/conf copying ironic/conf/metrics.py -> build/lib/ironic/conf copying ironic/conf/irmc.py -> build/lib/ironic/conf copying ironic/conf/ipmi.py -> build/lib/ironic/conf copying ironic/conf/inventory.py -> build/lib/ironic/conf copying ironic/conf/inspector.py -> build/lib/ironic/conf copying ironic/conf/ilo.py -> build/lib/ironic/conf copying ironic/conf/healthcheck.py -> build/lib/ironic/conf copying ironic/conf/glance.py -> build/lib/ironic/conf copying ironic/conf/fake.py -> build/lib/ironic/conf copying ironic/conf/drac.py -> build/lib/ironic/conf copying ironic/conf/dnsmasq.py -> build/lib/ironic/conf copying ironic/conf/disk_utils.py -> build/lib/ironic/conf copying ironic/conf/dhcp.py -> build/lib/ironic/conf copying ironic/conf/deploy.py -> build/lib/ironic/conf copying ironic/conf/default.py -> build/lib/ironic/conf copying ironic/conf/database.py -> build/lib/ironic/conf copying ironic/conf/console.py -> build/lib/ironic/conf copying ironic/conf/conductor.py -> build/lib/ironic/conf copying ironic/conf/cinder.py -> build/lib/ironic/conf copying ironic/conf/auth.py -> build/lib/ironic/conf copying ironic/conf/audit.py -> build/lib/ironic/conf copying ironic/conf/api.py -> build/lib/ironic/conf copying ironic/conf/ansible.py -> build/lib/ironic/conf copying ironic/conf/anaconda.py -> build/lib/ironic/conf copying ironic/conf/agent.py -> build/lib/ironic/conf copying ironic/conf/__init__.py -> build/lib/ironic/conf copying ironic/api/controllers/version.py -> build/lib/ironic/api/controllers copying ironic/api/controllers/root.py -> build/lib/ironic/api/controllers copying ironic/api/controllers/link.py -> build/lib/ironic/api/controllers copying ironic/api/controllers/base.py -> build/lib/ironic/api/controllers copying ironic/api/controllers/__init__.py -> build/lib/ironic/api/controllers running egg_info writing ironic.egg-info/PKG-INFO writing dependency_links to ironic.egg-info/dependency_links.txt writing entry points to ironic.egg-info/entry_points.txt writing requirements to ironic.egg-info/requires.txt writing top-level names to ironic.egg-info/top_level.txt writing pbr to ironic.egg-info/pbr.json [pbr] Processing SOURCES.txt [pbr] In git context, generating filelist from git warning: no previously-included files found matching '.gitignore' warning: no previously-included files found matching '.gitreview' warning: no previously-included files matching '*.pyc' found anywhere in distribution adding license file 'LICENSE' adding license file 'AUTHORS' writing manifest file 'ironic.egg-info/SOURCES.txt' /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.db.sqlalchemy.alembic' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.db.sqlalchemy.alembic' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.db.sqlalchemy.alembic' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.db.sqlalchemy.alembic' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.db.sqlalchemy.alembic.versions' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.db.sqlalchemy.alembic.versions' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.db.sqlalchemy.alembic.versions' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.db.sqlalchemy.alembic.versions' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.callback_plugins' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.callback_plugins' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.callback_plugins' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.callback_plugins' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.library' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.library' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.library' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.library' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.clean.defaults' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.clean.defaults' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.clean.defaults' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.clean.defaults' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.clean.tasks' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.clean.tasks' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.clean.tasks' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.clean.tasks' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.configure.defaults' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.configure.defaults' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.configure.defaults' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.configure.defaults' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.configure.tasks' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.configure.tasks' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.configure.tasks' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.configure.tasks' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.deploy.files' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.deploy.files' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.deploy.files' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.deploy.files' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.deploy.tasks' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.deploy.tasks' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.deploy.tasks' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.deploy.tasks' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.discover.tasks' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.discover.tasks' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.discover.tasks' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.discover.tasks' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.prepare.tasks' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.prepare.tasks' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.prepare.tasks' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.prepare.tasks' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.drivers.modules.ansible.playbooks.roles.shutdown.tasks' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.drivers.modules.ansible.playbooks.roles.shutdown.tasks' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.drivers.modules.ansible.playbooks.roles.shutdown.tasks' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.drivers.modules.ansible.playbooks.roles.shutdown.tasks' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.tests.json_samples' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.tests.json_samples' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.tests.json_samples' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.tests.json_samples' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.tests.unit.common.drive_samples' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.tests.unit.common.drive_samples' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.tests.unit.common.drive_samples' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.tests.unit.common.drive_samples' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.tests.unit.common.json_samples' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.tests.unit.common.json_samples' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.tests.unit.common.json_samples' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.tests.unit.common.json_samples' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) /usr/lib/python3.9/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'ironic.tests.unit.drivers.modules.network.json_samples' as data is deprecated, please list it in `packages`. !! ############################ # Package would be ignored # ############################ Python recognizes 'ironic.tests.unit.drivers.modules.network.json_samples' as an importable package, but it is not listed in the `packages` configuration of setuptools. 'ironic.tests.unit.drivers.modules.network.json_samples' has been automatically added to the distribution only because it may contain data files, but this behavior is likely to change in future versions of setuptools (and therefore is considered deprecated). Please make sure that 'ironic.tests.unit.drivers.modules.network.json_samples' is included as a package by using the `packages` configuration field or the proper discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" and "data files" on setuptools documentation page. !! check.warn(importable) creating build/lib/ironic/tests/unit/common/drive_samples copying ironic/tests/unit/common/drive_samples/config_drive -> build/lib/ironic/tests/unit/common/drive_samples creating build/lib/ironic/tests/unit/common/json_samples copying ironic/tests/unit/common/json_samples/neutron_network_show.json -> build/lib/ironic/tests/unit/common/json_samples copying ironic/tests/unit/common/json_samples/neutron_network_show_ipv6.json -> build/lib/ironic/tests/unit/common/json_samples copying ironic/tests/unit/common/json_samples/neutron_port_show.json -> build/lib/ironic/tests/unit/common/json_samples copying ironic/tests/unit/common/json_samples/neutron_port_show_ipv6.json -> build/lib/ironic/tests/unit/common/json_samples copying ironic/tests/unit/common/json_samples/neutron_subnet_show.json -> build/lib/ironic/tests/unit/common/json_samples copying ironic/tests/unit/common/json_samples/neutron_subnet_show_ipv6.json -> build/lib/ironic/tests/unit/common/json_samples creating build/lib/ironic/tests/unit/drivers/modules/network/json_samples copying ironic/tests/unit/drivers/modules/network/json_samples/network_data.json -> build/lib/ironic/tests/unit/drivers/modules/network/json_samples copying ironic/db/sqlalchemy/alembic.ini -> build/lib/ironic/db/sqlalchemy creating build/lib/ironic/db/sqlalchemy/alembic copying ironic/db/sqlalchemy/alembic/README -> build/lib/ironic/db/sqlalchemy/alembic copying ironic/db/sqlalchemy/alembic/env.py -> build/lib/ironic/db/sqlalchemy/alembic copying ironic/db/sqlalchemy/alembic/script.py.mako -> build/lib/ironic/db/sqlalchemy/alembic creating build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/01f21d5e5195_increase_length_of_user_column.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/0ac0f39bc5aa_add_node_inventory_table.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/10b163d4481e_add_port_portgroup_internal_info.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/163040c5513f_add_firmware_information.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/1a59178ebdf6_add_volume_targets_table.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/1d6951876d68_add_storage_interface_db_field_and_.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/1e15e7122cc9_add_extra_column_to_deploy_templates.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/1e1d5ace7dc6_add_inspection_started_at_and_.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/2353895ecfae_add_conductor_hardware_interfaces_table.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/242cc6a923b3_add_node_maintenance_reason.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/28c44432c9c3_add_node_description.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/2aac7e0872f6_add_deploy_templates.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/2bbd96b6ccb9_add_bios_fields_from_registry.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/2fb93ffd2af1_increase_node_name_length.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/3ae36a5f5131_add_logical_name.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/3d86a077a3f2_add_port_physical_network.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/405cfe08f18d_add_rescue_interface_to_node.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/48d6c242bb9b_add_node_tags.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/493d8f27f235_add_portgroup_configuration_fields.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/4dbec778866e_create_node_shard.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/516faf1bb9b1_resizing_column_nodes_driver.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/5ea1b0d310e_added_port_group_table_and_altered_ports.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/60cf717201bc_add_standalone_ports_supported.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/664f85c2f622_add_conductor_group_to_nodes_conductors.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/66bd9c5604d5_add_runbook_and_runbook_step.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/789acc877671_add_raid_config.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/82c315d60161_add_bios_settings.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/868cb606a74a_add_version_field_in_base_class.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/93706939026c_add_node_protected_field.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/9cbeefa3763f_add_port_is_smartnic.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/9ef41f07cb58_add_node_history_table.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/aa2384fee727_add_service_steps.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/ac00b586ab95_node_indexes.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/b2ad35726bb0_add_node_lessee.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/b4130a7fc904_create_nodetraits_table.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/b9117ac17882_add_node_deploy_step.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/bcdd431ba0bf_add_fields_for_all_interfaces.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/c0455649680c_port_name.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/c14cef6dfedf_populate_node_network_interface.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/c1846a214450_add_boot_mode_and_secure_boot.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/cd2c80feb331_add_node_retired_field.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/ce6c4b3cf5a2_add_allocation_owner.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/cf1a80fdb352_add_node_network_data_field.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/d163df1bab88_remove_extra_fk_constraint_in_.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/d2b036ae9378_add_automated_clean_field.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/daa1ba02d98_add_volume_connectors_table.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/dbefd6bdaa2c_add_default_column_to_.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/dd34e1f1303b_add_resource_class_to_node.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/dd67b91a1981_add_allocations_table.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/e294876e8028_add_node_network_interface.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/e918ff30eb42_resize_column_nodes_instance_info.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/f190f9d00a11_add_node_owner.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/f6fdb920c182_set_pxe_enabled_true.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/fb3f10dd262e_add_fault_to_node_table.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/db/sqlalchemy/alembic/versions/fe222f476baf_add_parent_node_field.py -> build/lib/ironic/db/sqlalchemy/alembic/versions copying ironic/common/grub_conf.template -> build/lib/ironic/common copying ironic/common/isolinux_config.template -> build/lib/ironic/common copying ironic/api/controllers/v1/network-data-schema.json -> build/lib/ironic/api/controllers/v1 copying ironic/drivers/raid_config_schema.json -> build/lib/ironic/drivers creating build/lib/ironic/drivers/modules/ansible/playbooks copying ironic/drivers/modules/ansible/playbooks/add-ironic-nodes.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks copying ironic/drivers/modules/ansible/playbooks/ansible.cfg -> build/lib/ironic/drivers/modules/ansible/playbooks copying ironic/drivers/modules/ansible/playbooks/clean.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks copying ironic/drivers/modules/ansible/playbooks/clean_steps.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks copying ironic/drivers/modules/ansible/playbooks/deploy.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks copying ironic/drivers/modules/ansible/playbooks/inventory -> build/lib/ironic/drivers/modules/ansible/playbooks copying ironic/drivers/modules/ansible/playbooks/shutdown.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks creating build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins copying ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.ini -> build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins copying ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.py -> build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins creating build/lib/ironic/drivers/modules/ansible/playbooks/library copying ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py -> build/lib/ironic/drivers/modules/ansible/playbooks/library copying ironic/drivers/modules/ansible/playbooks/library/root_hints.py -> build/lib/ironic/drivers/modules/ansible/playbooks/library copying ironic/drivers/modules/ansible/playbooks/library/stream_url.py -> build/lib/ironic/drivers/modules/ansible/playbooks/library creating build/lib/ironic/drivers/modules/ansible/playbooks/roles creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults copying ironic/drivers/modules/ansible/playbooks/roles/clean/defaults/main.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/main.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/shred.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/wipe.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/zap.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/defaults copying ironic/drivers/modules/ansible/playbooks/roles/configure/defaults/main.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/defaults creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks copying ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/grub.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks copying ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/main.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks copying ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/mounts.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/files copying ironic/drivers/modules/ansible/playbooks/roles/deploy/files/partition_configdrive.sh -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/files creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/configdrive.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/download.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/main.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/write.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/discover creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks copying ironic/drivers/modules/ansible/playbooks/roles/discover/tasks/main.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks copying ironic/drivers/modules/ansible/playbooks/roles/discover/tasks/roothints.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/prepare creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks copying ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks/main.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks copying ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks/parted.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/shutdown creating build/lib/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks copying ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks/main.yaml -> build/lib/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks copying ironic/drivers/modules/inspector/hooks/known_accelerators.yaml -> build/lib/ironic/drivers/modules/inspector/hooks copying ironic/tests/unit/drivers/boot-fallback.ipxe -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/boot.ipxe -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ipxe_config.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ipxe_config_timeout.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ks_extra_vars.tmpl -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/ks_missing_var.tmpl -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/pxe_config.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/pxe_grub_config.template -> build/lib/ironic/tests/unit/drivers copying ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ng.xml -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ok.xml -> build/lib/ironic/tests/unit/drivers/modules/irmc copying ironic/tests/unit/api/test_acl_basic.yaml -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_rbac_legacy.yaml -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_rbac_project_scoped.yaml -> build/lib/ironic/tests/unit/api copying ironic/tests/unit/api/test_rbac_system_scoped.yaml -> build/lib/ironic/tests/unit/api copying ironic/drivers/modules/boot.ipxe -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/initial_grub_cfg.template -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/ipxe_config.template -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/ks.cfg.template -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/pxe_config.template -> build/lib/ironic/drivers/modules copying ironic/drivers/modules/pxe_grub_config.template -> build/lib/ironic/drivers/modules creating build/lib/ironic/tests/json_samples copying ironic/tests/json_samples/network_data.json -> build/lib/ironic/tests/json_samples copying ironic/tests/json_samples/systems_collection_dual.json -> build/lib/ironic/tests/json_samples copying ironic/tests/json_samples/systems_collection_single.json -> build/lib/ironic/tests/json_samples installing to build/bdist.linux-x86_64/wheel running install [pbr] Writing ChangeLog [pbr] Generating ChangeLog [pbr] ChangeLog complete (0.0s) [pbr] Generating AUTHORS [pbr] AUTHORS complete (0.0s) running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/ironic creating build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/agent.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/anaconda.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/ansible.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/api.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/audit.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/auth.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/cinder.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/conductor.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/console.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/database.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/default.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/deploy.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/dhcp.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/disk_utils.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/dnsmasq.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/drac.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/fake.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/glance.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/healthcheck.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/ilo.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/inspector.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/inventory.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/ipmi.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/irmc.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/metrics.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/metrics_statsd.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/molds.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/neutron.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/nova.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/opts.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/pxe.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/redfish.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/sensor_data.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/service_catalog.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/snmp.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/swift.py -> build/bdist.linux-x86_64/wheel/ironic/conf copying build/lib/ironic/conf/types.py -> build/bdist.linux-x86_64/wheel/ironic/conf creating build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/allocation.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/base.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/bios.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/chassis.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/conductor.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/deploy_template.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/deployment.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/fields.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/firmware.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/indirection.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/node.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/node_history.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/node_inventory.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/notification.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/port.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/portgroup.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/runbook.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/trait.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/volume_connector.py -> build/bdist.linux-x86_64/wheel/ironic/objects copying build/lib/ironic/objects/volume_target.py -> build/bdist.linux-x86_64/wheel/ironic/objects creating build/bdist.linux-x86_64/wheel/ironic/dhcp copying build/lib/ironic/dhcp/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/dhcp copying build/lib/ironic/dhcp/base.py -> build/bdist.linux-x86_64/wheel/ironic/dhcp copying build/lib/ironic/dhcp/dnsmasq.py -> build/bdist.linux-x86_64/wheel/ironic/dhcp copying build/lib/ironic/dhcp/neutron.py -> build/bdist.linux-x86_64/wheel/ironic/dhcp copying build/lib/ironic/dhcp/none.py -> build/bdist.linux-x86_64/wheel/ironic/dhcp creating build/bdist.linux-x86_64/wheel/ironic/hacking copying build/lib/ironic/hacking/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/hacking copying build/lib/ironic/hacking/checks.py -> build/bdist.linux-x86_64/wheel/ironic/hacking creating build/bdist.linux-x86_64/wheel/ironic/pxe_filter copying build/lib/ironic/pxe_filter/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/pxe_filter copying build/lib/ironic/pxe_filter/dnsmasq.py -> build/bdist.linux-x86_64/wheel/ironic/pxe_filter copying build/lib/ironic/pxe_filter/service.py -> build/bdist.linux-x86_64/wheel/ironic/pxe_filter creating build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/isolinux_config.template -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/grub_conf.template -> build/bdist.linux-x86_64/wheel/ironic/common creating build/bdist.linux-x86_64/wheel/ironic/common/glance_service copying build/lib/ironic/common/glance_service/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/common/glance_service copying build/lib/ironic/common/glance_service/image_service.py -> build/bdist.linux-x86_64/wheel/ironic/common/glance_service copying build/lib/ironic/common/glance_service/service_utils.py -> build/bdist.linux-x86_64/wheel/ironic/common/glance_service copying build/lib/ironic/common/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/args.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/async_steps.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/boot_devices.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/boot_modes.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/checksum_utils.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/cinder.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/components.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/config.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/context.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/dhcp_factory.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/driver_factory.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/exception.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/faults.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/fsm.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/hash_ring.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/i18n.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/image_format_inspector.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/image_publisher.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/image_service.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/images.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/indicator_states.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/keystone.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/kickstart_utils.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/lessee_sources.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/molds.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/network.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/neutron.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/nova.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/policy.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/profiler.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/pxe_utils.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/qemu_img.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/raid.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/release_mappings.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/rpc.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/rpc_service.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/service.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/states.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/swift.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/utils.py -> build/bdist.linux-x86_64/wheel/ironic/common copying build/lib/ironic/common/wsgi_service.py -> build/bdist.linux-x86_64/wheel/ironic/common creating build/bdist.linux-x86_64/wheel/ironic/db copying build/lib/ironic/db/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/db copying build/lib/ironic/db/api.py -> build/bdist.linux-x86_64/wheel/ironic/db copying build/lib/ironic/db/migration.py -> build/bdist.linux-x86_64/wheel/ironic/db creating build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy creating build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic creating build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/fe222f476baf_add_parent_node_field.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/fb3f10dd262e_add_fault_to_node_table.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/f6fdb920c182_set_pxe_enabled_true.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/f190f9d00a11_add_node_owner.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/e918ff30eb42_resize_column_nodes_instance_info.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/e294876e8028_add_node_network_interface.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/dd67b91a1981_add_allocations_table.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/dd34e1f1303b_add_resource_class_to_node.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/dbefd6bdaa2c_add_default_column_to_.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/daa1ba02d98_add_volume_connectors_table.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/d2b036ae9378_add_automated_clean_field.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/d163df1bab88_remove_extra_fk_constraint_in_.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/cf1a80fdb352_add_node_network_data_field.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/ce6c4b3cf5a2_add_allocation_owner.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/cd2c80feb331_add_node_retired_field.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/c1846a214450_add_boot_mode_and_secure_boot.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/c14cef6dfedf_populate_node_network_interface.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/c0455649680c_port_name.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/bcdd431ba0bf_add_fields_for_all_interfaces.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/b9117ac17882_add_node_deploy_step.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/b4130a7fc904_create_nodetraits_table.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/b2ad35726bb0_add_node_lessee.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/ac00b586ab95_node_indexes.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/aa2384fee727_add_service_steps.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/9ef41f07cb58_add_node_history_table.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/9cbeefa3763f_add_port_is_smartnic.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/93706939026c_add_node_protected_field.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/868cb606a74a_add_version_field_in_base_class.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/82c315d60161_add_bios_settings.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/789acc877671_add_raid_config.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/66bd9c5604d5_add_runbook_and_runbook_step.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/664f85c2f622_add_conductor_group_to_nodes_conductors.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/60cf717201bc_add_standalone_ports_supported.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/5ea1b0d310e_added_port_group_table_and_altered_ports.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/516faf1bb9b1_resizing_column_nodes_driver.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/4dbec778866e_create_node_shard.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/493d8f27f235_add_portgroup_configuration_fields.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/48d6c242bb9b_add_node_tags.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/405cfe08f18d_add_rescue_interface_to_node.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/3d86a077a3f2_add_port_physical_network.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/3ae36a5f5131_add_logical_name.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/2fb93ffd2af1_increase_node_name_length.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/2bbd96b6ccb9_add_bios_fields_from_registry.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/2aac7e0872f6_add_deploy_templates.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/28c44432c9c3_add_node_description.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/242cc6a923b3_add_node_maintenance_reason.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/2353895ecfae_add_conductor_hardware_interfaces_table.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/1e1d5ace7dc6_add_inspection_started_at_and_.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/1e15e7122cc9_add_extra_column_to_deploy_templates.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/1d6951876d68_add_storage_interface_db_field_and_.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/1a59178ebdf6_add_volume_targets_table.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/163040c5513f_add_firmware_information.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/10b163d4481e_add_port_portgroup_internal_info.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/0ac0f39bc5aa_add_node_inventory_table.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/versions/01f21d5e5195_increase_length_of_user_column.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic/versions copying build/lib/ironic/db/sqlalchemy/alembic/script.py.mako -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic copying build/lib/ironic/db/sqlalchemy/alembic/env.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic copying build/lib/ironic/db/sqlalchemy/alembic/README -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy/alembic copying build/lib/ironic/db/sqlalchemy/alembic.ini -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy copying build/lib/ironic/db/sqlalchemy/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy copying build/lib/ironic/db/sqlalchemy/api.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy copying build/lib/ironic/db/sqlalchemy/migration.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy copying build/lib/ironic/db/sqlalchemy/models.py -> build/bdist.linux-x86_64/wheel/ironic/db/sqlalchemy creating build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/allocations.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/base_manager.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/cleaning.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/deployments.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/inspection.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/manager.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/notification_utils.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/periodics.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/rpc_service.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/rpcapi.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/servicing.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/steps.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/task_manager.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/utils.py -> build/bdist.linux-x86_64/wheel/ironic/conductor copying build/lib/ironic/conductor/verify.py -> build/bdist.linux-x86_64/wheel/ironic/conductor creating build/bdist.linux-x86_64/wheel/ironic/api creating build/bdist.linux-x86_64/wheel/ironic/api/middleware copying build/lib/ironic/api/middleware/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/api/middleware copying build/lib/ironic/api/middleware/auth_public_routes.py -> build/bdist.linux-x86_64/wheel/ironic/api/middleware copying build/lib/ironic/api/middleware/json_ext.py -> build/bdist.linux-x86_64/wheel/ironic/api/middleware copying build/lib/ironic/api/middleware/parsable_error.py -> build/bdist.linux-x86_64/wheel/ironic/api/middleware creating build/bdist.linux-x86_64/wheel/ironic/api/controllers copying build/lib/ironic/api/controllers/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers copying build/lib/ironic/api/controllers/base.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers copying build/lib/ironic/api/controllers/link.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers copying build/lib/ironic/api/controllers/root.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers copying build/lib/ironic/api/controllers/version.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers creating build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/network-data-schema.json -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/allocation.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/bios.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/chassis.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/collection.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/conductor.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/deploy_template.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/driver.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/event.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/firmware.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/node.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/notification_utils.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/port.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/portgroup.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/ramdisk.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/runbook.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/shard.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/utils.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/versions.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/volume.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/volume_connector.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/controllers/v1/volume_target.py -> build/bdist.linux-x86_64/wheel/ironic/api/controllers/v1 copying build/lib/ironic/api/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/api copying build/lib/ironic/api/app.py -> build/bdist.linux-x86_64/wheel/ironic/api copying build/lib/ironic/api/config.py -> build/bdist.linux-x86_64/wheel/ironic/api copying build/lib/ironic/api/functions.py -> build/bdist.linux-x86_64/wheel/ironic/api copying build/lib/ironic/api/hooks.py -> build/bdist.linux-x86_64/wheel/ironic/api copying build/lib/ironic/api/method.py -> build/bdist.linux-x86_64/wheel/ironic/api copying build/lib/ironic/api/wsgi.py -> build/bdist.linux-x86_64/wheel/ironic/api copying build/lib/ironic/__init__.py -> build/bdist.linux-x86_64/wheel/ironic copying build/lib/ironic/version.py -> build/bdist.linux-x86_64/wheel/ironic creating build/bdist.linux-x86_64/wheel/ironic/cmd copying build/lib/ironic/cmd/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/cmd copying build/lib/ironic/cmd/api.py -> build/bdist.linux-x86_64/wheel/ironic/cmd copying build/lib/ironic/cmd/conductor.py -> build/bdist.linux-x86_64/wheel/ironic/cmd copying build/lib/ironic/cmd/dbsync.py -> build/bdist.linux-x86_64/wheel/ironic/cmd copying build/lib/ironic/cmd/pxe_filter.py -> build/bdist.linux-x86_64/wheel/ironic/cmd copying build/lib/ironic/cmd/singleprocess.py -> build/bdist.linux-x86_64/wheel/ironic/cmd copying build/lib/ironic/cmd/status.py -> build/bdist.linux-x86_64/wheel/ironic/cmd creating build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/raid_config_schema.json -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/base.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/drac.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/fake_hardware.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/generic.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/hardware_type.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/ilo.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/intel_ipmi.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/ipmi.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/irmc.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/redfish.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/snmp.py -> build/bdist.linux-x86_64/wheel/ironic/drivers copying build/lib/ironic/drivers/utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/pxe_grub_config.template -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/pxe_config.template -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/ks.cfg.template -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/ipxe_config.template -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/initial_grub_cfg.template -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/boot.ipxe -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/intel_ipmi copying build/lib/ironic/drivers/modules/intel_ipmi/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/intel_ipmi copying build/lib/ironic/drivers/modules/intel_ipmi/management.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/intel_ipmi creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/bios.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/boot.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/inspect.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/management.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/power.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/raid.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/drac/vendor_passthru.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/drac copying build/lib/ironic/drivers/modules/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/agent.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/agent_base.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/agent_client.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/agent_power.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/boot_mode_utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/console_utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/deploy_utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/fake.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/image_cache.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/image_utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/inspect_utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/ipmitool.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/ipxe.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/noop.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/noop_mgmt.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/pxe.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/pxe_base.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/ramdisk.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules copying build/lib/ironic/drivers/modules/snmp.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/shutdown creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks/main.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/prepare creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks/parted.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks/main.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/discover creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks/roothints.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks/main.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/discover/tasks creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/deploy creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/write.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/main.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/download.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/configdrive.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/deploy/files copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/deploy/files/partition_configdrive.sh -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/deploy/files creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/configure creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/mounts.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/main.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/grub.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/configure/tasks creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/configure/defaults copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/configure/defaults/main.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/configure/defaults creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/clean creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/zap.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/wipe.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/shred.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/main.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/clean/tasks creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults copying build/lib/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults/main.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/roles/clean/defaults creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/library copying build/lib/ironic/drivers/modules/ansible/playbooks/library/stream_url.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/library copying build/lib/ironic/drivers/modules/ansible/playbooks/library/root_hints.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/library copying build/lib/ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/library creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/callback_plugins copying build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/callback_plugins copying build/lib/ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.ini -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks/callback_plugins copying build/lib/ironic/drivers/modules/ansible/playbooks/shutdown.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/playbooks/inventory -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/playbooks/deploy.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/playbooks/clean_steps.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/playbooks/clean.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/playbooks/ansible.cfg -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/playbooks/add-ironic-nodes.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible/playbooks copying build/lib/ironic/drivers/modules/ansible/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible copying build/lib/ironic/drivers/modules/ansible/deploy.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ansible creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/known_accelerators.yaml -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/accelerators.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/architecture.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/base.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/boot_mode.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/cpu_capabilities.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/extra_hardware.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/local_link_connection.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/memory.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/parse_lldp.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/pci_devices.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/physical_network.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/ports.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/raid_device.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/ramdisk_error.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/root_device.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/hooks/validate_interfaces.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector/hooks copying build/lib/ironic/drivers/modules/inspector/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector copying build/lib/ironic/drivers/modules/inspector/agent.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector copying build/lib/ironic/drivers/modules/inspector/client.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector copying build/lib/ironic/drivers/modules/inspector/interface.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector copying build/lib/ironic/drivers/modules/inspector/lldp_parsers.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector copying build/lib/ironic/drivers/modules/inspector/lldp_tlvs.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/inspector creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/bios.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/boot.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/common.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/console.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/firmware_processor.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/inspect.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/management.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/power.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/raid.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo copying build/lib/ironic/drivers/modules/ilo/vendor.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ilo creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ibmc copying build/lib/ironic/drivers/modules/ibmc/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/ibmc creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/bios.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/boot.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/common.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/inspect.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/management.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/power.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/raid.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc copying build/lib/ironic/drivers/modules/irmc/vendor.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/irmc creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/storage copying build/lib/ironic/drivers/modules/storage/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/storage copying build/lib/ironic/drivers/modules/storage/cinder.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/storage copying build/lib/ironic/drivers/modules/storage/external.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/storage copying build/lib/ironic/drivers/modules/storage/noop.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/storage creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/xclarity copying build/lib/ironic/drivers/modules/xclarity/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/xclarity creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/network copying build/lib/ironic/drivers/modules/network/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/network copying build/lib/ironic/drivers/modules/network/common.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/network copying build/lib/ironic/drivers/modules/network/flat.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/network copying build/lib/ironic/drivers/modules/network/neutron.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/network copying build/lib/ironic/drivers/modules/network/noop.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/network creating build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/bios.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/boot.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/firmware.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/firmware_utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/inspect.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/management.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/power.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/raid.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/utils.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish copying build/lib/ironic/drivers/modules/redfish/vendor.py -> build/bdist.linux-x86_64/wheel/ironic/drivers/modules/redfish creating build/bdist.linux-x86_64/wheel/ironic/tests creating build/bdist.linux-x86_64/wheel/ironic/tests/json_samples copying build/lib/ironic/tests/json_samples/systems_collection_single.json -> build/bdist.linux-x86_64/wheel/ironic/tests/json_samples copying build/lib/ironic/tests/json_samples/systems_collection_dual.json -> build/bdist.linux-x86_64/wheel/ironic/tests/json_samples copying build/lib/ironic/tests/json_samples/network_data.json -> build/bdist.linux-x86_64/wheel/ironic/tests/json_samples copying build/lib/ironic/tests/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests copying build/lib/ironic/tests/base.py -> build/bdist.linux-x86_64/wheel/ironic/tests creating build/bdist.linux-x86_64/wheel/ironic/tests/functional copying build/lib/ironic/tests/functional/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/functional creating build/bdist.linux-x86_64/wheel/ironic/tests/unit creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/dhcp copying build/lib/ironic/tests/unit/dhcp/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/dhcp copying build/lib/ironic/tests/unit/dhcp/test_dnsmasq.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/dhcp copying build/lib/ironic/tests/unit/dhcp/test_factory.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/dhcp copying build/lib/ironic/tests/unit/dhcp/test_neutron.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/dhcp creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/pxe_filter copying build/lib/ironic/tests/unit/pxe_filter/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/pxe_filter copying build/lib/ironic/tests/unit/pxe_filter/test_dnsmasq.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/pxe_filter copying build/lib/ironic/tests/unit/pxe_filter/test_service.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/pxe_filter creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/cmd copying build/lib/ironic/tests/unit/cmd/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/cmd copying build/lib/ironic/tests/unit/cmd/test_conductor.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/cmd copying build/lib/ironic/tests/unit/cmd/test_dbsync.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/cmd copying build/lib/ironic/tests/unit/cmd/test_status.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/cmd creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_allocation.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_bios.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_chassis.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_conductor.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_deploy_template.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_deployment.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_fields.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_firmware.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_node.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_node_history.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_node_inventory.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_notification.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_objects.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_port.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_portgroup.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_trait.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_volume_connector.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/test_volume_target.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects copying build/lib/ironic/tests/unit/objects/utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/objects creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/mgr_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_allocations.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_base_manager.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_cleaning.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_deployments.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_inspection.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_manager.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_notification_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_periodics.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_rpc_service.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_rpcapi.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_servicing.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_steps.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_task_manager.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor copying build/lib/ironic/tests/unit/conductor/test_verify.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conductor creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/conf copying build/lib/ironic/tests/unit/conf/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conf copying build/lib/ironic/tests/unit/conf/test_auth.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conf copying build/lib/ironic/tests/unit/conf/test_conductor.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conf copying build/lib/ironic/tests/unit/conf/test_types.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/conf creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/base.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_allocations.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_api.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_bios_settings.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_chassis.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_conductor.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_deploy_templates.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_firmware_component.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_node_history.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_node_inventory.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_node_tags.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_node_traits.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_nodes.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_portgroups.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_ports.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_runbooks.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_shard.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_volume_connectors.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/test_volume_targets.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db copying build/lib/ironic/tests/unit/db/utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/db/sqlalchemy copying build/lib/ironic/tests/unit/db/sqlalchemy/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db/sqlalchemy copying build/lib/ironic/tests/unit/db/sqlalchemy/test_api.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db/sqlalchemy copying build/lib/ironic/tests/unit/db/sqlalchemy/test_migrations.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db/sqlalchemy copying build/lib/ironic/tests/unit/db/sqlalchemy/test_models.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db/sqlalchemy copying build/lib/ironic/tests/unit/db/sqlalchemy/test_types.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/db/sqlalchemy creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/common creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/json_samples copying build/lib/ironic/tests/unit/common/json_samples/neutron_subnet_show_ipv6.json -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/json_samples copying build/lib/ironic/tests/unit/common/json_samples/neutron_subnet_show.json -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/json_samples copying build/lib/ironic/tests/unit/common/json_samples/neutron_port_show_ipv6.json -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/json_samples copying build/lib/ironic/tests/unit/common/json_samples/neutron_port_show.json -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/json_samples copying build/lib/ironic/tests/unit/common/json_samples/neutron_network_show_ipv6.json -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/json_samples copying build/lib/ironic/tests/unit/common/json_samples/neutron_network_show.json -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/json_samples creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/drive_samples copying build/lib/ironic/tests/unit/common/drive_samples/config_drive -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common/drive_samples copying build/lib/ironic/tests/unit/common/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_args.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_checksum_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_cinder.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_context.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_driver_factory.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_format_inspector.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_fsm.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_glance_service.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_hash_ring.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_image_publisher.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_image_service.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_images.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_keystone.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_kickstart_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_molds.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_network.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_neutron.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_nova.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_policy.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_pxe_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_qemu_img.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_raid.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_release_mappings.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_rpc.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_states.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_swift.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common copying build/lib/ironic/tests/unit/common/test_wsgi_service.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/common creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_rbac_system_scoped.yaml -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_rbac_project_scoped.yaml -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_rbac_legacy.yaml -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_acl_basic.yaml -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/base.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_acl.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_audit.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_functions.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_healthcheck.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_hooks.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_method.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_middleware.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_ospmiddleware.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_proxy_middleware.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/test_root.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api copying build/lib/ironic/tests/unit/api/utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers copying build/lib/ironic/tests/unit/api/controllers/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers copying build/lib/ironic/tests/unit/api/controllers/test_base.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_allocation.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_chassis.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_collection.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_conductor.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_deploy_template.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_driver.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_event.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_node.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_notification_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_port.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_portgroup.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_ramdisk.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_root.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_runbook.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_shard.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_versions.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume_connector.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 copying build/lib/ironic/tests/unit/api/controllers/v1/test_volume_target.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/api/controllers/v1 creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/pxe_grub_config.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/pxe_config.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ks_missing_var.tmpl -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ks_extra_vars.tmpl -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config_timeout.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/ipxe_config.template -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/boot.ipxe -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/boot-fallback.ipxe -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_base.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_drac.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_fake_hardware.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_generic.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_ilo.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_ipmi.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_irmc.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_redfish.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_snmp.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/test_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/third_party_driver_mock_specs.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers copying build/lib/ironic/tests/unit/drivers/third_party_driver_mocks.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ansible copying build/lib/ironic/tests/unit/drivers/modules/ansible/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ansible copying build/lib/ironic/tests/unit/drivers/modules/ansible/test_deploy.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ansible creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ok.xml -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ng.xml -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_bios.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_boot.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_common.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_inspect.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_management.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_periodic_task.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_power.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc copying build/lib/ironic/tests/unit/drivers/modules/irmc/test_raid.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/irmc creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_bios.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_boot.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_common.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_console.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_firmware_processor.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_inspect.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_management.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_power.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_raid.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo copying build/lib/ironic/tests/unit/drivers/modules/ilo/test_vendor.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ilo creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ibmc copying build/lib/ironic/tests/unit/drivers/modules/ibmc/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/ibmc creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector copying build/lib/ironic/tests/unit/drivers/modules/inspector/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector copying build/lib/ironic/tests/unit/drivers/modules/inspector/test_agent.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector copying build/lib/ironic/tests/unit/drivers/modules/inspector/test_client.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector copying build/lib/ironic/tests/unit/drivers/modules/inspector/test_interface.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_accelerators.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_architecture.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_boot_mode.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_cpu_capabilities.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_extra_hardware.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_local_link_connection.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_memory.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_parse_lldp.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_pci_devices.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_physical_network.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_ports.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_raid_device.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_ramdisk_error.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_root_device.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/inspector/hooks/test_validate_interfaces.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/inspector/hooks copying build/lib/ironic/tests/unit/drivers/modules/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_agent.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_agent_base.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_agent_client.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_agent_power.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_boot_mode_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_console_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_deploy_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_image_cache.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_image_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_inspect_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_ipmitool.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_ipxe.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_noop.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_noop_mgmt.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_pxe.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_ramdisk.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules copying build/lib/ironic/tests/unit/drivers/modules/test_snmp.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/storage copying build/lib/ironic/tests/unit/drivers/modules/storage/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/storage copying build/lib/ironic/tests/unit/drivers/modules/storage/test_cinder.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/storage copying build/lib/ironic/tests/unit/drivers/modules/storage/test_external.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/storage creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/intel_ipmi copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/intel_ipmi copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/base.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/intel_ipmi copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/intel_ipmi copying build/lib/ironic/tests/unit/drivers/modules/intel_ipmi/test_management.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/intel_ipmi creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/xclarity copying build/lib/ironic/tests/unit/drivers/modules/xclarity/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/xclarity creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/network creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/network/json_samples copying build/lib/ironic/tests/unit/drivers/modules/network/json_samples/network_data.json -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/network/json_samples copying build/lib/ironic/tests/unit/drivers/modules/network/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/network copying build/lib/ironic/tests/unit/drivers/modules/network/test_common.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/network copying build/lib/ironic/tests/unit/drivers/modules/network/test_flat.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/network copying build/lib/ironic/tests/unit/drivers/modules/network/test_neutron.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/network copying build/lib/ironic/tests/unit/drivers/modules/network/test_noop.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/network creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_bios.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_boot.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_firmware.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_inspect.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_management.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_power.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_raid.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish copying build/lib/ironic/tests/unit/drivers/modules/redfish/test_vendor.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/redfish creating build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/test_boot.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/test_inspect.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/test_management.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/test_raid.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/test_utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/drivers/modules/drac/utils.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit/drivers/modules/drac copying build/lib/ironic/tests/unit/__init__.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit copying build/lib/ironic/tests/unit/policy_fixture.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit copying build/lib/ironic/tests/unit/raid_constants.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit copying build/lib/ironic/tests/unit/stubs.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit copying build/lib/ironic/tests/unit/test_base.py -> build/bdist.linux-x86_64/wheel/ironic/tests/unit running install_data creating build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.data creating build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.data/data creating build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.data/data/etc creating build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.data/data/etc/ironic copying etc/ironic/rootwrap.conf -> build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.data/data/etc/ironic creating build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.data/data/etc/ironic/rootwrap.d copying etc/ironic/rootwrap.d/ironic-utils.filters -> build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.data/data/etc/ironic/rootwrap.d/ running install_egg_info Copying ironic.egg-info to build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2-py3.9.egg-info running install_scripts Installing ironic-api-wsgi script to build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.data/scripts adding license file "LICENSE" (matched pattern "LICEN[CS]E*") adding license file "AUTHORS" (matched pattern "AUTHORS*") creating build/bdist.linux-x86_64/wheel/ironic-26.1.5.dev2.dist-info/WHEEL creating '/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir/pip-wheel-9w69_bd2/tmpzgmcfltb/ironic-26.1.5.dev2-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'ironic/__init__.py' adding 'ironic/version.py' adding 'ironic/api/__init__.py' adding 'ironic/api/app.py' adding 'ironic/api/config.py' adding 'ironic/api/functions.py' adding 'ironic/api/hooks.py' adding 'ironic/api/method.py' adding 'ironic/api/wsgi.py' adding 'ironic/api/controllers/__init__.py' adding 'ironic/api/controllers/base.py' adding 'ironic/api/controllers/link.py' adding 'ironic/api/controllers/root.py' adding 'ironic/api/controllers/version.py' adding 'ironic/api/controllers/v1/__init__.py' adding 'ironic/api/controllers/v1/allocation.py' adding 'ironic/api/controllers/v1/bios.py' adding 'ironic/api/controllers/v1/chassis.py' adding 'ironic/api/controllers/v1/collection.py' adding 'ironic/api/controllers/v1/conductor.py' adding 'ironic/api/controllers/v1/deploy_template.py' adding 'ironic/api/controllers/v1/driver.py' adding 'ironic/api/controllers/v1/event.py' adding 'ironic/api/controllers/v1/firmware.py' adding 'ironic/api/controllers/v1/network-data-schema.json' adding 'ironic/api/controllers/v1/node.py' adding 'ironic/api/controllers/v1/notification_utils.py' adding 'ironic/api/controllers/v1/port.py' adding 'ironic/api/controllers/v1/portgroup.py' adding 'ironic/api/controllers/v1/ramdisk.py' adding 'ironic/api/controllers/v1/runbook.py' adding 'ironic/api/controllers/v1/shard.py' adding 'ironic/api/controllers/v1/utils.py' adding 'ironic/api/controllers/v1/versions.py' adding 'ironic/api/controllers/v1/volume.py' adding 'ironic/api/controllers/v1/volume_connector.py' adding 'ironic/api/controllers/v1/volume_target.py' adding 'ironic/api/middleware/__init__.py' adding 'ironic/api/middleware/auth_public_routes.py' adding 'ironic/api/middleware/json_ext.py' adding 'ironic/api/middleware/parsable_error.py' adding 'ironic/cmd/__init__.py' adding 'ironic/cmd/api.py' adding 'ironic/cmd/conductor.py' adding 'ironic/cmd/dbsync.py' adding 'ironic/cmd/pxe_filter.py' adding 'ironic/cmd/singleprocess.py' adding 'ironic/cmd/status.py' adding 'ironic/common/__init__.py' adding 'ironic/common/args.py' adding 'ironic/common/async_steps.py' adding 'ironic/common/boot_devices.py' adding 'ironic/common/boot_modes.py' adding 'ironic/common/checksum_utils.py' adding 'ironic/common/cinder.py' adding 'ironic/common/components.py' adding 'ironic/common/config.py' adding 'ironic/common/context.py' adding 'ironic/common/dhcp_factory.py' adding 'ironic/common/driver_factory.py' adding 'ironic/common/exception.py' adding 'ironic/common/faults.py' adding 'ironic/common/fsm.py' adding 'ironic/common/grub_conf.template' adding 'ironic/common/hash_ring.py' adding 'ironic/common/i18n.py' adding 'ironic/common/image_format_inspector.py' adding 'ironic/common/image_publisher.py' adding 'ironic/common/image_service.py' adding 'ironic/common/images.py' adding 'ironic/common/indicator_states.py' adding 'ironic/common/isolinux_config.template' adding 'ironic/common/keystone.py' adding 'ironic/common/kickstart_utils.py' adding 'ironic/common/lessee_sources.py' adding 'ironic/common/molds.py' adding 'ironic/common/network.py' adding 'ironic/common/neutron.py' adding 'ironic/common/nova.py' adding 'ironic/common/policy.py' adding 'ironic/common/profiler.py' adding 'ironic/common/pxe_utils.py' adding 'ironic/common/qemu_img.py' adding 'ironic/common/raid.py' adding 'ironic/common/release_mappings.py' adding 'ironic/common/rpc.py' adding 'ironic/common/rpc_service.py' adding 'ironic/common/service.py' adding 'ironic/common/states.py' adding 'ironic/common/swift.py' adding 'ironic/common/utils.py' adding 'ironic/common/wsgi_service.py' adding 'ironic/common/glance_service/__init__.py' adding 'ironic/common/glance_service/image_service.py' adding 'ironic/common/glance_service/service_utils.py' adding 'ironic/conductor/__init__.py' adding 'ironic/conductor/allocations.py' adding 'ironic/conductor/base_manager.py' adding 'ironic/conductor/cleaning.py' adding 'ironic/conductor/deployments.py' adding 'ironic/conductor/inspection.py' adding 'ironic/conductor/manager.py' adding 'ironic/conductor/notification_utils.py' adding 'ironic/conductor/periodics.py' adding 'ironic/conductor/rpc_service.py' adding 'ironic/conductor/rpcapi.py' adding 'ironic/conductor/servicing.py' adding 'ironic/conductor/steps.py' adding 'ironic/conductor/task_manager.py' adding 'ironic/conductor/utils.py' adding 'ironic/conductor/verify.py' adding 'ironic/conf/__init__.py' adding 'ironic/conf/agent.py' adding 'ironic/conf/anaconda.py' adding 'ironic/conf/ansible.py' adding 'ironic/conf/api.py' adding 'ironic/conf/audit.py' adding 'ironic/conf/auth.py' adding 'ironic/conf/cinder.py' adding 'ironic/conf/conductor.py' adding 'ironic/conf/console.py' adding 'ironic/conf/database.py' adding 'ironic/conf/default.py' adding 'ironic/conf/deploy.py' adding 'ironic/conf/dhcp.py' adding 'ironic/conf/disk_utils.py' adding 'ironic/conf/dnsmasq.py' adding 'ironic/conf/drac.py' adding 'ironic/conf/fake.py' adding 'ironic/conf/glance.py' adding 'ironic/conf/healthcheck.py' adding 'ironic/conf/ilo.py' adding 'ironic/conf/inspector.py' adding 'ironic/conf/inventory.py' adding 'ironic/conf/ipmi.py' adding 'ironic/conf/irmc.py' adding 'ironic/conf/metrics.py' adding 'ironic/conf/metrics_statsd.py' adding 'ironic/conf/molds.py' adding 'ironic/conf/neutron.py' adding 'ironic/conf/nova.py' adding 'ironic/conf/opts.py' adding 'ironic/conf/pxe.py' adding 'ironic/conf/redfish.py' adding 'ironic/conf/sensor_data.py' adding 'ironic/conf/service_catalog.py' adding 'ironic/conf/snmp.py' adding 'ironic/conf/swift.py' adding 'ironic/conf/types.py' adding 'ironic/db/__init__.py' adding 'ironic/db/api.py' adding 'ironic/db/migration.py' adding 'ironic/db/sqlalchemy/__init__.py' adding 'ironic/db/sqlalchemy/alembic.ini' adding 'ironic/db/sqlalchemy/api.py' adding 'ironic/db/sqlalchemy/migration.py' adding 'ironic/db/sqlalchemy/models.py' adding 'ironic/db/sqlalchemy/alembic/README' adding 'ironic/db/sqlalchemy/alembic/env.py' adding 'ironic/db/sqlalchemy/alembic/script.py.mako' adding 'ironic/db/sqlalchemy/alembic/versions/01f21d5e5195_increase_length_of_user_column.py' adding 'ironic/db/sqlalchemy/alembic/versions/0ac0f39bc5aa_add_node_inventory_table.py' adding 'ironic/db/sqlalchemy/alembic/versions/10b163d4481e_add_port_portgroup_internal_info.py' adding 'ironic/db/sqlalchemy/alembic/versions/163040c5513f_add_firmware_information.py' adding 'ironic/db/sqlalchemy/alembic/versions/1a59178ebdf6_add_volume_targets_table.py' adding 'ironic/db/sqlalchemy/alembic/versions/1d6951876d68_add_storage_interface_db_field_and_.py' adding 'ironic/db/sqlalchemy/alembic/versions/1e15e7122cc9_add_extra_column_to_deploy_templates.py' adding 'ironic/db/sqlalchemy/alembic/versions/1e1d5ace7dc6_add_inspection_started_at_and_.py' adding 'ironic/db/sqlalchemy/alembic/versions/21b331f883ef_add_provision_updated_at.py' adding 'ironic/db/sqlalchemy/alembic/versions/2353895ecfae_add_conductor_hardware_interfaces_table.py' adding 'ironic/db/sqlalchemy/alembic/versions/242cc6a923b3_add_node_maintenance_reason.py' adding 'ironic/db/sqlalchemy/alembic/versions/2581ebaf0cb2_initial_migration.py' adding 'ironic/db/sqlalchemy/alembic/versions/28c44432c9c3_add_node_description.py' adding 'ironic/db/sqlalchemy/alembic/versions/2aac7e0872f6_add_deploy_templates.py' adding 'ironic/db/sqlalchemy/alembic/versions/2bbd96b6ccb9_add_bios_fields_from_registry.py' adding 'ironic/db/sqlalchemy/alembic/versions/2d13bc3d6bba_add_bios_config_and_interface.py' adding 'ironic/db/sqlalchemy/alembic/versions/2fb93ffd2af1_increase_node_name_length.py' adding 'ironic/db/sqlalchemy/alembic/versions/31baaf680d2b_add_node_instance_info.py' adding 'ironic/db/sqlalchemy/alembic/versions/3ae36a5f5131_add_logical_name.py' adding 'ironic/db/sqlalchemy/alembic/versions/3bea56f25597_add_unique_constraint_to_instance_uuid.py' adding 'ironic/db/sqlalchemy/alembic/versions/3cb628139ea4_nodes_add_console_enabled.py' adding 'ironic/db/sqlalchemy/alembic/versions/3d86a077a3f2_add_port_physical_network.py' adding 'ironic/db/sqlalchemy/alembic/versions/405cfe08f18d_add_rescue_interface_to_node.py' adding 'ironic/db/sqlalchemy/alembic/versions/487deb87cc9d_add_conductor_affinity_and_online.py' adding 'ironic/db/sqlalchemy/alembic/versions/48d6c242bb9b_add_node_tags.py' adding 'ironic/db/sqlalchemy/alembic/versions/493d8f27f235_add_portgroup_configuration_fields.py' adding 'ironic/db/sqlalchemy/alembic/versions/4dbec778866e_create_node_shard.py' adding 'ironic/db/sqlalchemy/alembic/versions/4f399b21ae71_add_node_clean_step.py' adding 'ironic/db/sqlalchemy/alembic/versions/516faf1bb9b1_resizing_column_nodes_driver.py' adding 'ironic/db/sqlalchemy/alembic/versions/5674c57409b9_replace_nostate_with_available.py' adding 'ironic/db/sqlalchemy/alembic/versions/5ea1b0d310e_added_port_group_table_and_altered_ports.py' adding 'ironic/db/sqlalchemy/alembic/versions/60cf717201bc_add_standalone_ports_supported.py' adding 'ironic/db/sqlalchemy/alembic/versions/664f85c2f622_add_conductor_group_to_nodes_conductors.py' adding 'ironic/db/sqlalchemy/alembic/versions/66bd9c5604d5_add_runbook_and_runbook_step.py' adding 'ironic/db/sqlalchemy/alembic/versions/789acc877671_add_raid_config.py' adding 'ironic/db/sqlalchemy/alembic/versions/82c315d60161_add_bios_settings.py' adding 'ironic/db/sqlalchemy/alembic/versions/868cb606a74a_add_version_field_in_base_class.py' adding 'ironic/db/sqlalchemy/alembic/versions/93706939026c_add_node_protected_field.py' adding 'ironic/db/sqlalchemy/alembic/versions/9cbeefa3763f_add_port_is_smartnic.py' adding 'ironic/db/sqlalchemy/alembic/versions/9ef41f07cb58_add_node_history_table.py' adding 'ironic/db/sqlalchemy/alembic/versions/aa2384fee727_add_service_steps.py' adding 'ironic/db/sqlalchemy/alembic/versions/ac00b586ab95_node_indexes.py' adding 'ironic/db/sqlalchemy/alembic/versions/b2ad35726bb0_add_node_lessee.py' adding 'ironic/db/sqlalchemy/alembic/versions/b4130a7fc904_create_nodetraits_table.py' adding 'ironic/db/sqlalchemy/alembic/versions/b9117ac17882_add_node_deploy_step.py' adding 'ironic/db/sqlalchemy/alembic/versions/bb59b63f55a_add_node_driver_internal_info.py' adding 'ironic/db/sqlalchemy/alembic/versions/bcdd431ba0bf_add_fields_for_all_interfaces.py' adding 'ironic/db/sqlalchemy/alembic/versions/c0455649680c_port_name.py' adding 'ironic/db/sqlalchemy/alembic/versions/c14cef6dfedf_populate_node_network_interface.py' adding 'ironic/db/sqlalchemy/alembic/versions/c1846a214450_add_boot_mode_and_secure_boot.py' adding 'ironic/db/sqlalchemy/alembic/versions/cd2c80feb331_add_node_retired_field.py' adding 'ironic/db/sqlalchemy/alembic/versions/ce6c4b3cf5a2_add_allocation_owner.py' adding 'ironic/db/sqlalchemy/alembic/versions/cf1a80fdb352_add_node_network_data_field.py' adding 'ironic/db/sqlalchemy/alembic/versions/d163df1bab88_remove_extra_fk_constraint_in_.py' adding 'ironic/db/sqlalchemy/alembic/versions/d2b036ae9378_add_automated_clean_field.py' adding 'ironic/db/sqlalchemy/alembic/versions/daa1ba02d98_add_volume_connectors_table.py' adding 'ironic/db/sqlalchemy/alembic/versions/dbefd6bdaa2c_add_default_column_to_.py' adding 'ironic/db/sqlalchemy/alembic/versions/dd34e1f1303b_add_resource_class_to_node.py' adding 'ironic/db/sqlalchemy/alembic/versions/dd67b91a1981_add_allocations_table.py' adding 'ironic/db/sqlalchemy/alembic/versions/e294876e8028_add_node_network_interface.py' adding 'ironic/db/sqlalchemy/alembic/versions/e918ff30eb42_resize_column_nodes_instance_info.py' adding 'ironic/db/sqlalchemy/alembic/versions/f190f9d00a11_add_node_owner.py' adding 'ironic/db/sqlalchemy/alembic/versions/f6fdb920c182_set_pxe_enabled_true.py' adding 'ironic/db/sqlalchemy/alembic/versions/fb3f10dd262e_add_fault_to_node_table.py' adding 'ironic/db/sqlalchemy/alembic/versions/fe222f476baf_add_parent_node_field.py' adding 'ironic/dhcp/__init__.py' adding 'ironic/dhcp/base.py' adding 'ironic/dhcp/dnsmasq.py' adding 'ironic/dhcp/neutron.py' adding 'ironic/dhcp/none.py' adding 'ironic/drivers/__init__.py' adding 'ironic/drivers/base.py' adding 'ironic/drivers/drac.py' adding 'ironic/drivers/fake_hardware.py' adding 'ironic/drivers/generic.py' adding 'ironic/drivers/hardware_type.py' adding 'ironic/drivers/ilo.py' adding 'ironic/drivers/intel_ipmi.py' adding 'ironic/drivers/ipmi.py' adding 'ironic/drivers/irmc.py' adding 'ironic/drivers/raid_config_schema.json' adding 'ironic/drivers/redfish.py' adding 'ironic/drivers/snmp.py' adding 'ironic/drivers/utils.py' adding 'ironic/drivers/modules/__init__.py' adding 'ironic/drivers/modules/agent.py' adding 'ironic/drivers/modules/agent_base.py' adding 'ironic/drivers/modules/agent_client.py' adding 'ironic/drivers/modules/agent_power.py' adding 'ironic/drivers/modules/boot.ipxe' adding 'ironic/drivers/modules/boot_mode_utils.py' adding 'ironic/drivers/modules/console_utils.py' adding 'ironic/drivers/modules/deploy_utils.py' adding 'ironic/drivers/modules/fake.py' adding 'ironic/drivers/modules/image_cache.py' adding 'ironic/drivers/modules/image_utils.py' adding 'ironic/drivers/modules/initial_grub_cfg.template' adding 'ironic/drivers/modules/inspect_utils.py' adding 'ironic/drivers/modules/ipmitool.py' adding 'ironic/drivers/modules/ipxe.py' adding 'ironic/drivers/modules/ipxe_config.template' adding 'ironic/drivers/modules/ks.cfg.template' adding 'ironic/drivers/modules/noop.py' adding 'ironic/drivers/modules/noop_mgmt.py' adding 'ironic/drivers/modules/pxe.py' adding 'ironic/drivers/modules/pxe_base.py' adding 'ironic/drivers/modules/pxe_config.template' adding 'ironic/drivers/modules/pxe_grub_config.template' adding 'ironic/drivers/modules/ramdisk.py' adding 'ironic/drivers/modules/snmp.py' adding 'ironic/drivers/modules/ansible/__init__.py' adding 'ironic/drivers/modules/ansible/deploy.py' adding 'ironic/drivers/modules/ansible/playbooks/add-ironic-nodes.yaml' adding 'ironic/drivers/modules/ansible/playbooks/ansible.cfg' adding 'ironic/drivers/modules/ansible/playbooks/clean.yaml' adding 'ironic/drivers/modules/ansible/playbooks/clean_steps.yaml' adding 'ironic/drivers/modules/ansible/playbooks/deploy.yaml' adding 'ironic/drivers/modules/ansible/playbooks/inventory' adding 'ironic/drivers/modules/ansible/playbooks/shutdown.yaml' adding 'ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.ini' adding 'ironic/drivers/modules/ansible/playbooks/callback_plugins/ironic_log.py' adding 'ironic/drivers/modules/ansible/playbooks/library/facts_wwn.py' adding 'ironic/drivers/modules/ansible/playbooks/library/root_hints.py' adding 'ironic/drivers/modules/ansible/playbooks/library/stream_url.py' adding 'ironic/drivers/modules/ansible/playbooks/roles/clean/defaults/main.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/main.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/shred.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/wipe.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/clean/tasks/zap.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/configure/defaults/main.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/grub.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/main.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/configure/tasks/mounts.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/deploy/files/partition_configdrive.sh' adding 'ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/configdrive.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/download.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/main.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/deploy/tasks/write.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/discover/tasks/main.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/discover/tasks/roothints.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks/main.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/prepare/tasks/parted.yaml' adding 'ironic/drivers/modules/ansible/playbooks/roles/shutdown/tasks/main.yaml' adding 'ironic/drivers/modules/drac/__init__.py' adding 'ironic/drivers/modules/drac/bios.py' adding 'ironic/drivers/modules/drac/boot.py' adding 'ironic/drivers/modules/drac/inspect.py' adding 'ironic/drivers/modules/drac/management.py' adding 'ironic/drivers/modules/drac/power.py' adding 'ironic/drivers/modules/drac/raid.py' adding 'ironic/drivers/modules/drac/utils.py' adding 'ironic/drivers/modules/drac/vendor_passthru.py' adding 'ironic/drivers/modules/ibmc/__init__.py' adding 'ironic/drivers/modules/ilo/__init__.py' adding 'ironic/drivers/modules/ilo/bios.py' adding 'ironic/drivers/modules/ilo/boot.py' adding 'ironic/drivers/modules/ilo/common.py' adding 'ironic/drivers/modules/ilo/console.py' adding 'ironic/drivers/modules/ilo/firmware_processor.py' adding 'ironic/drivers/modules/ilo/inspect.py' adding 'ironic/drivers/modules/ilo/management.py' adding 'ironic/drivers/modules/ilo/power.py' adding 'ironic/drivers/modules/ilo/raid.py' adding 'ironic/drivers/modules/ilo/vendor.py' adding 'ironic/drivers/modules/inspector/__init__.py' adding 'ironic/drivers/modules/inspector/agent.py' adding 'ironic/drivers/modules/inspector/client.py' adding 'ironic/drivers/modules/inspector/interface.py' adding 'ironic/drivers/modules/inspector/lldp_parsers.py' adding 'ironic/drivers/modules/inspector/lldp_tlvs.py' adding 'ironic/drivers/modules/inspector/hooks/__init__.py' adding 'ironic/drivers/modules/inspector/hooks/accelerators.py' adding 'ironic/drivers/modules/inspector/hooks/architecture.py' adding 'ironic/drivers/modules/inspector/hooks/base.py' adding 'ironic/drivers/modules/inspector/hooks/boot_mode.py' adding 'ironic/drivers/modules/inspector/hooks/cpu_capabilities.py' adding 'ironic/drivers/modules/inspector/hooks/extra_hardware.py' adding 'ironic/drivers/modules/inspector/hooks/known_accelerators.yaml' adding 'ironic/drivers/modules/inspector/hooks/local_link_connection.py' adding 'ironic/drivers/modules/inspector/hooks/memory.py' adding 'ironic/drivers/modules/inspector/hooks/parse_lldp.py' adding 'ironic/drivers/modules/inspector/hooks/pci_devices.py' adding 'ironic/drivers/modules/inspector/hooks/physical_network.py' adding 'ironic/drivers/modules/inspector/hooks/ports.py' adding 'ironic/drivers/modules/inspector/hooks/raid_device.py' adding 'ironic/drivers/modules/inspector/hooks/ramdisk_error.py' adding 'ironic/drivers/modules/inspector/hooks/root_device.py' adding 'ironic/drivers/modules/inspector/hooks/validate_interfaces.py' adding 'ironic/drivers/modules/intel_ipmi/__init__.py' adding 'ironic/drivers/modules/intel_ipmi/management.py' adding 'ironic/drivers/modules/irmc/__init__.py' adding 'ironic/drivers/modules/irmc/bios.py' adding 'ironic/drivers/modules/irmc/boot.py' adding 'ironic/drivers/modules/irmc/common.py' adding 'ironic/drivers/modules/irmc/inspect.py' adding 'ironic/drivers/modules/irmc/management.py' adding 'ironic/drivers/modules/irmc/power.py' adding 'ironic/drivers/modules/irmc/raid.py' adding 'ironic/drivers/modules/irmc/vendor.py' adding 'ironic/drivers/modules/network/__init__.py' adding 'ironic/drivers/modules/network/common.py' adding 'ironic/drivers/modules/network/flat.py' adding 'ironic/drivers/modules/network/neutron.py' adding 'ironic/drivers/modules/network/noop.py' adding 'ironic/drivers/modules/redfish/__init__.py' adding 'ironic/drivers/modules/redfish/bios.py' adding 'ironic/drivers/modules/redfish/boot.py' adding 'ironic/drivers/modules/redfish/firmware.py' adding 'ironic/drivers/modules/redfish/firmware_utils.py' adding 'ironic/drivers/modules/redfish/inspect.py' adding 'ironic/drivers/modules/redfish/management.py' adding 'ironic/drivers/modules/redfish/power.py' adding 'ironic/drivers/modules/redfish/raid.py' adding 'ironic/drivers/modules/redfish/utils.py' adding 'ironic/drivers/modules/redfish/vendor.py' adding 'ironic/drivers/modules/storage/__init__.py' adding 'ironic/drivers/modules/storage/cinder.py' adding 'ironic/drivers/modules/storage/external.py' adding 'ironic/drivers/modules/storage/noop.py' adding 'ironic/drivers/modules/xclarity/__init__.py' adding 'ironic/hacking/__init__.py' adding 'ironic/hacking/checks.py' adding 'ironic/objects/__init__.py' adding 'ironic/objects/allocation.py' adding 'ironic/objects/base.py' adding 'ironic/objects/bios.py' adding 'ironic/objects/chassis.py' adding 'ironic/objects/conductor.py' adding 'ironic/objects/deploy_template.py' adding 'ironic/objects/deployment.py' adding 'ironic/objects/fields.py' adding 'ironic/objects/firmware.py' adding 'ironic/objects/indirection.py' adding 'ironic/objects/node.py' adding 'ironic/objects/node_history.py' adding 'ironic/objects/node_inventory.py' adding 'ironic/objects/notification.py' adding 'ironic/objects/port.py' adding 'ironic/objects/portgroup.py' adding 'ironic/objects/runbook.py' adding 'ironic/objects/trait.py' adding 'ironic/objects/volume_connector.py' adding 'ironic/objects/volume_target.py' adding 'ironic/pxe_filter/__init__.py' adding 'ironic/pxe_filter/dnsmasq.py' adding 'ironic/pxe_filter/service.py' adding 'ironic/tests/__init__.py' adding 'ironic/tests/base.py' adding 'ironic/tests/functional/__init__.py' adding 'ironic/tests/json_samples/network_data.json' adding 'ironic/tests/json_samples/systems_collection_dual.json' adding 'ironic/tests/json_samples/systems_collection_single.json' adding 'ironic/tests/unit/__init__.py' adding 'ironic/tests/unit/policy_fixture.py' adding 'ironic/tests/unit/raid_constants.py' adding 'ironic/tests/unit/stubs.py' adding 'ironic/tests/unit/test_base.py' adding 'ironic/tests/unit/api/__init__.py' adding 'ironic/tests/unit/api/base.py' adding 'ironic/tests/unit/api/test_acl.py' adding 'ironic/tests/unit/api/test_acl_basic.yaml' adding 'ironic/tests/unit/api/test_audit.py' adding 'ironic/tests/unit/api/test_functions.py' adding 'ironic/tests/unit/api/test_healthcheck.py' adding 'ironic/tests/unit/api/test_hooks.py' adding 'ironic/tests/unit/api/test_method.py' adding 'ironic/tests/unit/api/test_middleware.py' adding 'ironic/tests/unit/api/test_ospmiddleware.py' adding 'ironic/tests/unit/api/test_proxy_middleware.py' adding 'ironic/tests/unit/api/test_rbac_legacy.yaml' adding 'ironic/tests/unit/api/test_rbac_project_scoped.yaml' adding 'ironic/tests/unit/api/test_rbac_system_scoped.yaml' adding 'ironic/tests/unit/api/test_root.py' adding 'ironic/tests/unit/api/utils.py' adding 'ironic/tests/unit/api/controllers/__init__.py' adding 'ironic/tests/unit/api/controllers/test_base.py' adding 'ironic/tests/unit/api/controllers/v1/__init__.py' adding 'ironic/tests/unit/api/controllers/v1/test_allocation.py' adding 'ironic/tests/unit/api/controllers/v1/test_chassis.py' adding 'ironic/tests/unit/api/controllers/v1/test_collection.py' adding 'ironic/tests/unit/api/controllers/v1/test_conductor.py' adding 'ironic/tests/unit/api/controllers/v1/test_deploy_template.py' adding 'ironic/tests/unit/api/controllers/v1/test_driver.py' adding 'ironic/tests/unit/api/controllers/v1/test_event.py' adding 'ironic/tests/unit/api/controllers/v1/test_node.py' adding 'ironic/tests/unit/api/controllers/v1/test_notification_utils.py' adding 'ironic/tests/unit/api/controllers/v1/test_port.py' adding 'ironic/tests/unit/api/controllers/v1/test_portgroup.py' adding 'ironic/tests/unit/api/controllers/v1/test_ramdisk.py' adding 'ironic/tests/unit/api/controllers/v1/test_root.py' adding 'ironic/tests/unit/api/controllers/v1/test_runbook.py' adding 'ironic/tests/unit/api/controllers/v1/test_shard.py' adding 'ironic/tests/unit/api/controllers/v1/test_utils.py' adding 'ironic/tests/unit/api/controllers/v1/test_versions.py' adding 'ironic/tests/unit/api/controllers/v1/test_volume.py' adding 'ironic/tests/unit/api/controllers/v1/test_volume_connector.py' adding 'ironic/tests/unit/api/controllers/v1/test_volume_target.py' adding 'ironic/tests/unit/cmd/__init__.py' adding 'ironic/tests/unit/cmd/test_conductor.py' adding 'ironic/tests/unit/cmd/test_dbsync.py' adding 'ironic/tests/unit/cmd/test_status.py' adding 'ironic/tests/unit/common/__init__.py' adding 'ironic/tests/unit/common/test_args.py' adding 'ironic/tests/unit/common/test_checksum_utils.py' adding 'ironic/tests/unit/common/test_cinder.py' adding 'ironic/tests/unit/common/test_context.py' adding 'ironic/tests/unit/common/test_driver_factory.py' adding 'ironic/tests/unit/common/test_format_inspector.py' adding 'ironic/tests/unit/common/test_fsm.py' adding 'ironic/tests/unit/common/test_glance_service.py' adding 'ironic/tests/unit/common/test_hash_ring.py' adding 'ironic/tests/unit/common/test_image_publisher.py' adding 'ironic/tests/unit/common/test_image_service.py' adding 'ironic/tests/unit/common/test_images.py' adding 'ironic/tests/unit/common/test_keystone.py' adding 'ironic/tests/unit/common/test_kickstart_utils.py' adding 'ironic/tests/unit/common/test_molds.py' adding 'ironic/tests/unit/common/test_network.py' adding 'ironic/tests/unit/common/test_neutron.py' adding 'ironic/tests/unit/common/test_nova.py' adding 'ironic/tests/unit/common/test_policy.py' adding 'ironic/tests/unit/common/test_pxe_utils.py' adding 'ironic/tests/unit/common/test_qemu_img.py' adding 'ironic/tests/unit/common/test_raid.py' adding 'ironic/tests/unit/common/test_release_mappings.py' adding 'ironic/tests/unit/common/test_rpc.py' adding 'ironic/tests/unit/common/test_states.py' adding 'ironic/tests/unit/common/test_swift.py' adding 'ironic/tests/unit/common/test_utils.py' adding 'ironic/tests/unit/common/test_wsgi_service.py' adding 'ironic/tests/unit/common/drive_samples/config_drive' adding 'ironic/tests/unit/common/json_samples/neutron_network_show.json' adding 'ironic/tests/unit/common/json_samples/neutron_network_show_ipv6.json' adding 'ironic/tests/unit/common/json_samples/neutron_port_show.json' adding 'ironic/tests/unit/common/json_samples/neutron_port_show_ipv6.json' adding 'ironic/tests/unit/common/json_samples/neutron_subnet_show.json' adding 'ironic/tests/unit/common/json_samples/neutron_subnet_show_ipv6.json' adding 'ironic/tests/unit/conductor/__init__.py' adding 'ironic/tests/unit/conductor/mgr_utils.py' adding 'ironic/tests/unit/conductor/test_allocations.py' adding 'ironic/tests/unit/conductor/test_base_manager.py' adding 'ironic/tests/unit/conductor/test_cleaning.py' adding 'ironic/tests/unit/conductor/test_deployments.py' adding 'ironic/tests/unit/conductor/test_inspection.py' adding 'ironic/tests/unit/conductor/test_manager.py' adding 'ironic/tests/unit/conductor/test_notification_utils.py' adding 'ironic/tests/unit/conductor/test_periodics.py' adding 'ironic/tests/unit/conductor/test_rpc_service.py' adding 'ironic/tests/unit/conductor/test_rpcapi.py' adding 'ironic/tests/unit/conductor/test_servicing.py' adding 'ironic/tests/unit/conductor/test_steps.py' adding 'ironic/tests/unit/conductor/test_task_manager.py' adding 'ironic/tests/unit/conductor/test_utils.py' adding 'ironic/tests/unit/conductor/test_verify.py' adding 'ironic/tests/unit/conf/__init__.py' adding 'ironic/tests/unit/conf/test_auth.py' adding 'ironic/tests/unit/conf/test_conductor.py' adding 'ironic/tests/unit/conf/test_types.py' adding 'ironic/tests/unit/db/__init__.py' adding 'ironic/tests/unit/db/base.py' adding 'ironic/tests/unit/db/test_allocations.py' adding 'ironic/tests/unit/db/test_api.py' adding 'ironic/tests/unit/db/test_bios_settings.py' adding 'ironic/tests/unit/db/test_chassis.py' adding 'ironic/tests/unit/db/test_conductor.py' adding 'ironic/tests/unit/db/test_deploy_templates.py' adding 'ironic/tests/unit/db/test_firmware_component.py' adding 'ironic/tests/unit/db/test_node_history.py' adding 'ironic/tests/unit/db/test_node_inventory.py' adding 'ironic/tests/unit/db/test_node_tags.py' adding 'ironic/tests/unit/db/test_node_traits.py' adding 'ironic/tests/unit/db/test_nodes.py' adding 'ironic/tests/unit/db/test_portgroups.py' adding 'ironic/tests/unit/db/test_ports.py' adding 'ironic/tests/unit/db/test_runbooks.py' adding 'ironic/tests/unit/db/test_shard.py' adding 'ironic/tests/unit/db/test_volume_connectors.py' adding 'ironic/tests/unit/db/test_volume_targets.py' adding 'ironic/tests/unit/db/utils.py' adding 'ironic/tests/unit/db/sqlalchemy/__init__.py' adding 'ironic/tests/unit/db/sqlalchemy/test_api.py' adding 'ironic/tests/unit/db/sqlalchemy/test_migrations.py' adding 'ironic/tests/unit/db/sqlalchemy/test_models.py' adding 'ironic/tests/unit/db/sqlalchemy/test_types.py' adding 'ironic/tests/unit/dhcp/__init__.py' adding 'ironic/tests/unit/dhcp/test_dnsmasq.py' adding 'ironic/tests/unit/dhcp/test_factory.py' adding 'ironic/tests/unit/dhcp/test_neutron.py' adding 'ironic/tests/unit/drivers/__init__.py' adding 'ironic/tests/unit/drivers/boot-fallback.ipxe' adding 'ironic/tests/unit/drivers/boot.ipxe' adding 'ironic/tests/unit/drivers/ipxe_config.template' adding 'ironic/tests/unit/drivers/ipxe_config_boot_from_anaconda.template' adding 'ironic/tests/unit/drivers/ipxe_config_boot_from_iso.template' adding 'ironic/tests/unit/drivers/ipxe_config_boot_from_ramdisk.template' adding 'ironic/tests/unit/drivers/ipxe_config_boot_from_volume_extra_volume.template' adding 'ironic/tests/unit/drivers/ipxe_config_boot_from_volume_multipath.template' adding 'ironic/tests/unit/drivers/ipxe_config_boot_from_volume_no_extra_volumes.template' adding 'ironic/tests/unit/drivers/ipxe_config_timeout.template' adding 'ironic/tests/unit/drivers/ks_extra_vars.tmpl' adding 'ironic/tests/unit/drivers/ks_missing_var.tmpl' adding 'ironic/tests/unit/drivers/pxe_config.template' adding 'ironic/tests/unit/drivers/pxe_grub_config.template' adding 'ironic/tests/unit/drivers/test_base.py' adding 'ironic/tests/unit/drivers/test_drac.py' adding 'ironic/tests/unit/drivers/test_fake_hardware.py' adding 'ironic/tests/unit/drivers/test_generic.py' adding 'ironic/tests/unit/drivers/test_ilo.py' adding 'ironic/tests/unit/drivers/test_ipmi.py' adding 'ironic/tests/unit/drivers/test_irmc.py' adding 'ironic/tests/unit/drivers/test_redfish.py' adding 'ironic/tests/unit/drivers/test_snmp.py' adding 'ironic/tests/unit/drivers/test_utils.py' adding 'ironic/tests/unit/drivers/third_party_driver_mock_specs.py' adding 'ironic/tests/unit/drivers/third_party_driver_mocks.py' adding 'ironic/tests/unit/drivers/modules/__init__.py' adding 'ironic/tests/unit/drivers/modules/test_agent.py' adding 'ironic/tests/unit/drivers/modules/test_agent_base.py' adding 'ironic/tests/unit/drivers/modules/test_agent_client.py' adding 'ironic/tests/unit/drivers/modules/test_agent_power.py' adding 'ironic/tests/unit/drivers/modules/test_boot_mode_utils.py' adding 'ironic/tests/unit/drivers/modules/test_console_utils.py' adding 'ironic/tests/unit/drivers/modules/test_deploy_utils.py' adding 'ironic/tests/unit/drivers/modules/test_image_cache.py' adding 'ironic/tests/unit/drivers/modules/test_image_utils.py' adding 'ironic/tests/unit/drivers/modules/test_inspect_utils.py' adding 'ironic/tests/unit/drivers/modules/test_ipmitool.py' adding 'ironic/tests/unit/drivers/modules/test_ipxe.py' adding 'ironic/tests/unit/drivers/modules/test_noop.py' adding 'ironic/tests/unit/drivers/modules/test_noop_mgmt.py' adding 'ironic/tests/unit/drivers/modules/test_pxe.py' adding 'ironic/tests/unit/drivers/modules/test_ramdisk.py' adding 'ironic/tests/unit/drivers/modules/test_snmp.py' adding 'ironic/tests/unit/drivers/modules/ansible/__init__.py' adding 'ironic/tests/unit/drivers/modules/ansible/test_deploy.py' adding 'ironic/tests/unit/drivers/modules/drac/__init__.py' adding 'ironic/tests/unit/drivers/modules/drac/test_boot.py' adding 'ironic/tests/unit/drivers/modules/drac/test_inspect.py' adding 'ironic/tests/unit/drivers/modules/drac/test_management.py' adding 'ironic/tests/unit/drivers/modules/drac/test_raid.py' adding 'ironic/tests/unit/drivers/modules/drac/test_utils.py' adding 'ironic/tests/unit/drivers/modules/drac/utils.py' adding 'ironic/tests/unit/drivers/modules/ibmc/__init__.py' adding 'ironic/tests/unit/drivers/modules/ilo/__init__.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_bios.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_boot.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_common.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_console.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_firmware_processor.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_inspect.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_management.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_power.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_raid.py' adding 'ironic/tests/unit/drivers/modules/ilo/test_vendor.py' adding 'ironic/tests/unit/drivers/modules/inspector/__init__.py' adding 'ironic/tests/unit/drivers/modules/inspector/test_agent.py' adding 'ironic/tests/unit/drivers/modules/inspector/test_client.py' adding 'ironic/tests/unit/drivers/modules/inspector/test_interface.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/__init__.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_accelerators.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_architecture.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_boot_mode.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_cpu_capabilities.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_extra_hardware.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_local_link_connection.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_memory.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_parse_lldp.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_pci_devices.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_physical_network.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_ports.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_raid_device.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_ramdisk_error.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_root_device.py' adding 'ironic/tests/unit/drivers/modules/inspector/hooks/test_validate_interfaces.py' adding 'ironic/tests/unit/drivers/modules/intel_ipmi/__init__.py' adding 'ironic/tests/unit/drivers/modules/intel_ipmi/base.py' adding 'ironic/tests/unit/drivers/modules/intel_ipmi/test_intel_ipmi.py' adding 'ironic/tests/unit/drivers/modules/intel_ipmi/test_management.py' adding 'ironic/tests/unit/drivers/modules/irmc/__init__.py' adding 'ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ng.xml' adding 'ironic/tests/unit/drivers/modules/irmc/fake_sensors_data_ok.xml' adding 'ironic/tests/unit/drivers/modules/irmc/test_bios.py' adding 'ironic/tests/unit/drivers/modules/irmc/test_boot.py' adding 'ironic/tests/unit/drivers/modules/irmc/test_common.py' adding 'ironic/tests/unit/drivers/modules/irmc/test_inspect.py' adding 'ironic/tests/unit/drivers/modules/irmc/test_management.py' adding 'ironic/tests/unit/drivers/modules/irmc/test_periodic_task.py' adding 'ironic/tests/unit/drivers/modules/irmc/test_power.py' adding 'ironic/tests/unit/drivers/modules/irmc/test_raid.py' adding 'ironic/tests/unit/drivers/modules/network/__init__.py' adding 'ironic/tests/unit/drivers/modules/network/test_common.py' adding 'ironic/tests/unit/drivers/modules/network/test_flat.py' adding 'ironic/tests/unit/drivers/modules/network/test_neutron.py' adding 'ironic/tests/unit/drivers/modules/network/test_noop.py' adding 'ironic/tests/unit/drivers/modules/network/json_samples/network_data.json' adding 'ironic/tests/unit/drivers/modules/redfish/__init__.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_bios.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_boot.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_firmware.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_inspect.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_management.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_power.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_raid.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_utils.py' adding 'ironic/tests/unit/drivers/modules/redfish/test_vendor.py' adding 'ironic/tests/unit/drivers/modules/storage/__init__.py' adding 'ironic/tests/unit/drivers/modules/storage/test_cinder.py' adding 'ironic/tests/unit/drivers/modules/storage/test_external.py' adding 'ironic/tests/unit/drivers/modules/xclarity/__init__.py' adding 'ironic/tests/unit/objects/__init__.py' adding 'ironic/tests/unit/objects/test_allocation.py' adding 'ironic/tests/unit/objects/test_bios.py' adding 'ironic/tests/unit/objects/test_chassis.py' adding 'ironic/tests/unit/objects/test_conductor.py' adding 'ironic/tests/unit/objects/test_deploy_template.py' adding 'ironic/tests/unit/objects/test_deployment.py' adding 'ironic/tests/unit/objects/test_fields.py' adding 'ironic/tests/unit/objects/test_firmware.py' adding 'ironic/tests/unit/objects/test_node.py' adding 'ironic/tests/unit/objects/test_node_history.py' adding 'ironic/tests/unit/objects/test_node_inventory.py' adding 'ironic/tests/unit/objects/test_notification.py' adding 'ironic/tests/unit/objects/test_objects.py' adding 'ironic/tests/unit/objects/test_port.py' adding 'ironic/tests/unit/objects/test_portgroup.py' adding 'ironic/tests/unit/objects/test_trait.py' adding 'ironic/tests/unit/objects/test_volume_connector.py' adding 'ironic/tests/unit/objects/test_volume_target.py' adding 'ironic/tests/unit/objects/utils.py' adding 'ironic/tests/unit/pxe_filter/__init__.py' adding 'ironic/tests/unit/pxe_filter/test_dnsmasq.py' adding 'ironic/tests/unit/pxe_filter/test_service.py' adding 'ironic-26.1.5.dev2.data/data/etc/ironic/rootwrap.conf' adding 'ironic-26.1.5.dev2.data/data/etc/ironic/rootwrap.d/ironic-utils.filters' adding 'ironic-26.1.5.dev2.data/scripts/ironic-api-wsgi' adding 'ironic-26.1.5.dev2.dist-info/AUTHORS' adding 'ironic-26.1.5.dev2.dist-info/LICENSE' adding 'ironic-26.1.5.dev2.dist-info/METADATA' adding 'ironic-26.1.5.dev2.dist-info/WHEEL' adding 'ironic-26.1.5.dev2.dist-info/entry_points.txt' adding 'ironic-26.1.5.dev2.dist-info/pbr.json' adding 'ironic-26.1.5.dev2.dist-info/top_level.txt' adding 'ironic-26.1.5.dev2.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Building wheel for ironic (pyproject.toml): finished with status 'done' Created wheel for ironic: filename=ironic-26.1.5.dev2-py3-none-any.whl size=2015487 sha256=51ab00bbf00ff36a66aeb29918072dbc182512f16f541096f253b5baa337929f Stored in directory: /builddir/.cache/pip/wheels/3e/2a/d1/b5b54296d1dcce843c087d75135e25bb6a9d031e543a4b8e9f Successfully built ironic + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.ZcHKHM + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 '!=' / ']' + rm -rf /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 ++ dirname /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 + cd ironic-26.1.5.dev2 ++ xargs basename --multiple ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' ++ ls /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir/ironic-26.1.5.dev2-py3-none-any.whl + specifier=ironic==26.1.5.dev2 + '[' -z ironic==26.1.5.dev2 ']' + TMPDIR=/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 --prefix /usr --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir ironic==26.1.5.dev2 Using pip 21.3.1 from /usr/lib/python3.9/site-packages/pip (python 3.9) Looking in links: /builddir/build/BUILD/ironic-26.1.5.dev2/pyproject-wheeldir Processing ./pyproject-wheeldir/ironic-26.1.5.dev2-py3-none-any.whl Installing collected packages: ironic changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-api to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-conductor to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-dbsync to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-pxe-filter to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-rootwrap to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-status to 755 Successfully installed ironic-26.1.5.dev2 + '[' -d /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin ']' + '[' -z s ']' + shebang_flags=-kas + /usr/bin/python3 -B /usr/lib/rpm/redhat/pathfix.py -pni /usr/bin/python3 -kas /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-api /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-api-wsgi /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-conductor /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-dbsync /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-pxe-filter /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-rootwrap /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-status /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-api: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-api-wsgi: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-conductor: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-dbsync: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-pxe-filter: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-rootwrap: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/ironic-status: updating + rm -rfv /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin/__pycache__ + rm -f /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages ']' + site_dirs+=("/usr/lib/python3.9/site-packages") + '[' /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib64/python3.9/site-packages '!=' /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages ']' + '[' -d /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib64/python3.9/site-packages ']' + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64$site_dir/*.dist-info + echo '%ghost /usr/lib/python3.9/site-packages/ironic-26.1.5.dev2.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.5.dev2.dist-info/INSTALLER + PYTHONPATH=/usr/lib/rpm/redhat + /usr/bin/python3 -B /usr/lib/rpm/redhat/pyproject_preprocess_record.py --buildroot /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 --record /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.5.dev2.dist-info/RECORD --output /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-record + rm -fv /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.5.dev2.dist-info/RECORD removed '/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.5.dev2.dist-info/RECORD' + rm -fv /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.5.dev2.dist-info/REQUESTED removed '/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.5.dev2.dist-info/REQUESTED' ++ wc -l /builddir/build/BUILD/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64-pyproject-ghost-distinfo ++ cut -f1 '-d ' + lines=1 + '[' 1 -ne 1 ']' + install -p -D -m 644 /builddir/build/SOURCES/ironic.logrotate /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/etc/logrotate.d/openstack-ironic + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/systemd/system + install -p -D -m 644 /builddir/build/SOURCES/openstack-ironic-api.service /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/systemd/system + install -p -D -m 644 /builddir/build/SOURCES/openstack-ironic-conductor.service /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/systemd/system + install -p -D -m 644 /builddir/build/SOURCES/openstack-ironic-dnsmasq-tftp-server.service /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/systemd/system + install -p -D -m 644 /builddir/build/SOURCES/openstack-ironic.service /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/systemd/system + install -p -D -m 644 /builddir/build/SOURCES/openstack-ironic-pxe-filter.service /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/systemd/system + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/etc/sudoers.d + install -p -D -m 440 /builddir/build/SOURCES/ironic-sudoers /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/etc/sudoers.d/ironic + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/var/lib/ironic/ + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/var/log/ironic/ + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/etc/ironic/rootwrap.d + export PYTHONPATH=/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64//usr/lib/python3.9/site-packages + PYTHONPATH=/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64//usr/lib/python3.9/site-packages + oslo-config-generator --config-file tools/config/ironic-config-generator.conf --output-file /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64//etc/ironic/ironic.conf /usr/lib/python3.9/site-packages/requests/__init__.py:86: RequestsDependencyWarning: Unable to find acceptable character detection dependency (chardet or charset_normalizer). warnings.warn( + oslopolicy-sample-generator --config-file tools/policy/ironic-policy-generator.conf /usr/lib/python3.9/site-packages/requests/__init__.py:86: RequestsDependencyWarning: Unable to find acceptable character detection dependency (chardet or charset_normalizer). warnings.warn( + mv /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/etc/ironic/rootwrap.conf /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64//etc/ironic/rootwrap.conf + mv /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/etc/ironic/rootwrap.d/ironic-utils.filters /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64//etc/ironic/rootwrap.d/ + rmdir /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/etc/ironic/rootwrap.d + rmdir /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/etc/ironic + install -p -D -m 640 /builddir/build/SOURCES/ironic-dist.conf /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64//usr/share/ironic/ironic-dist.conf + install -p -D -m 644 /builddir/build/SOURCES/dnsmasq-tftp-server.conf /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64//etc/ironic/dnsmasq-tftp-server.conf + /usr/bin/find-debuginfo -j4 --strict-build-id -m -i --build-id-seed 26.1.5-0.20251111185332.f2a4a74.el9 --unique-debug-suffix -26.1.5-0.20251111185332.f2a4a74.el9.x86_64 --unique-debug-src-base openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 --remove-section .gnu.build.attributes -S debugsourcefiles.list /builddir/build/BUILD/ironic-26.1.5.dev2 find: 'debug': No such file or directory + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + /usr/lib/rpm/brp-compress + /usr/lib/rpm/redhat/brp-strip-lto /usr/bin/strip + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 Bytecompiling .py files below /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9 using python3.9 + /usr/lib/rpm/brp-python-hardlink + /usr/lib/rpm/redhat/brp-mangle-shebangs mangling shebang in /usr/lib/python3.9/site-packages/ironic/drivers/modules/ansible/playbooks/roles/deploy/files/partition_configdrive.sh from /bin/sh to #!/usr/bin/sh Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.uDEpBP + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + TOX_TESTENV_PASSENV='*' + CFLAGS='-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' + PATH=/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin + PYTHONPATH=/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib64/python3.9/site-packages:/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS=' --ignore=/builddir/build/BUILD/ironic-26.1.5.dev2/.pyproject-builddir' + PYTEST_XDIST_AUTO_NUM_WORKERS=4 + HOSTNAME=rpmbuild + /usr/bin/python3 -m tox --current-env -q --recreate -e py39 /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /usr/lib/python3.9/site-packages/requests/__init__.py:86: RequestsDependencyWarning: Unable to find acceptable character detection dependency (chardet or charset_normalizer). warnings.warn( /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /usr/lib/python3.9/site-packages/requests/__init__.py:86: RequestsDependencyWarning: Unable to find acceptable character detection dependency (chardet or charset_normalizer). warnings.warn( /usr/lib/python3.9/site-packages/requests/__init__.py:86: RequestsDependencyWarning: Unable to find acceptable character detection dependency (chardet or charset_normalizer). warnings.warn( /usr/lib/python3.9/site-packages/requests/__init__.py:86: RequestsDependencyWarning: Unable to find acceptable character detection dependency (chardet or charset_normalizer). warnings.warn( /usr/lib/python3.9/site-packages/requests/__init__.py:86: RequestsDependencyWarning: Unable to find acceptable character detection dependency (chardet or charset_normalizer). warnings.warn( {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add [0.497502s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/13ad34fc-ca02-4eab-8341-45326a44d639 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6c410c63-561e-41c5-9d4a-034f85134e56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "13ad34fc-ca02-4eab-8341-45326a44d639", "created_at": "2025-11-11T18:57:46.677074+00:00", "updated_at": "2025-11-11T18:57:46.713797+00:00", "candidate_nodes": [], "extra": {"foo": "bar"}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/13ad34fc-ca02-4eab-8341-45326a44d639", "rel": "self"}, {"href": "http://localhost/allocations/13ad34fc-ca02-4eab-8341-45326a44d639", "rel": "bookmark"}], "node_uuid": null} Captured stderr: ~~~~~~~~~~~~~~~~ INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running stamp_revision -> 66bd9c5604d5 {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_multi [0.094458s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/1ddacc14-9f73-4338-b14b-9a9db1911c64 WITH [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d2932c61-99ee-4e2f-9c9d-7968431cebbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1ddacc14-9f73-4338-b14b-9a9db1911c64", "created_at": "2025-11-11T18:57:46.773798+00:00", "updated_at": "2025-11-11T18:57:46.803281+00:00", "candidate_nodes": [], "extra": {"foo1": "bar1", "foo2": "bar2"}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/1ddacc14-9f73-4338-b14b-9a9db1911c64", "rel": "self"}, {"href": "http://localhost/allocations/1ddacc14-9f73-4338-b14b-9a9db1911c64", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/1ddacc14-9f73-4338-b14b-9a9db1911c64 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-59675e4e-4bff-4707-8e1e-ea2bf3773580 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1ddacc14-9f73-4338-b14b-9a9db1911c64", "created_at": "2025-11-11T18:57:46.773798+00:00", "updated_at": "2025-11-11T18:57:46.803281+00:00", "candidate_nodes": [], "extra": {"foo1": "bar1", "foo2": "bar2"}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/1ddacc14-9f73-4338-b14b-9a9db1911c64", "rel": "self"}, {"href": "http://localhost/allocations/1ddacc14-9f73-4338-b14b-9a9db1911c64", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_non_existent [0.062731s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/23b00f56-3cc6-4093-a860-e634a83e6c8b WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-017cdb47-5e8a-4f79-a23c-dcde20f63c50 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: name, extra\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_multi [0.130651s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1 WITH [{'path': '/extra/foo2', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-44aa0f63-a48a-464c-84b9-477c4dc6bfad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "created_at": "2025-11-11T18:57:46.932430+00:00", "updated_at": "2025-11-11T18:57:46.958226+00:00", "candidate_nodes": [], "extra": {"foo1": "bar1", "foo3": "bar3"}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "rel": "self"}, {"href": "http://localhost/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2078a7c-77a7-4dbe-8ffd-85af7a8c1209 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "created_at": "2025-11-11T18:57:46.932430+00:00", "updated_at": "2025-11-11T18:57:46.958226+00:00", "candidate_nodes": [], "extra": {"foo1": "bar1", "foo3": "bar3"}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "rel": "self"}, {"href": "http://localhost/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "rel": "bookmark"}], "node_uuid": null} PATCH /v1/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1 WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c39abf1f-d54e-446f-972e-5742c27aeb81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "created_at": "2025-11-11T18:57:46.932430+00:00", "updated_at": "2025-11-11T18:57:46.997522+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "rel": "self"}, {"href": "http://localhost/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-541c48f3-0461-45f0-a46a-f837906f49ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "created_at": "2025-11-11T18:57:46.932430+00:00", "updated_at": "2025-11-11T18:57:46.997522+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "rel": "self"}, {"href": "http://localhost/allocations/9f1aa2ef-c441-4068-b025-ed59ce6f44f1", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_non_existent_property_fail [0.062589s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/5cd3e496-82d5-4456-99fb-85473ee08e1e WITH [{'path': '/extra/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dfdcac80-1653-4474-ad28-0bf0c5904708 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_singular [0.087744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/d107dc3d-d018-4332-ae4f-184103ce8b51 WITH [{'path': '/extra/a', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f4a13814-53f3-4181-80d9-b507012d14cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d107dc3d-d018-4332-ae4f-184103ce8b51", "created_at": "2025-11-11T18:57:47.127055+00:00", "updated_at": "2025-11-11T18:57:47.163657+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d107dc3d-d018-4332-ae4f-184103ce8b51", "rel": "self"}, {"href": "http://localhost/allocations/d107dc3d-d018-4332-ae4f-184103ce8b51", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/d107dc3d-d018-4332-ae4f-184103ce8b51 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d9692c08-c152-4dfa-b556-f0562c8418d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d107dc3d-d018-4332-ae4f-184103ce8b51", "created_at": "2025-11-11T18:57:47.127055+00:00", "updated_at": "2025-11-11T18:57:47.163657+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d107dc3d-d018-4332-ae4f-184103ce8b51", "rel": "self"}, {"href": "http://localhost/allocations/d107dc3d-d018-4332-ae4f-184103ce8b51", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_uuid [0.029426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/6fc291f3-0526-4d8a-956b-9ef1d45cb8c6 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b37d4fc2-1f74-4a05-898c-703659442e74 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: name, extra\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_invalid_name [0.029835s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/3f68be3f-9892-4cfa-a267-870dc1956727 WITH [{'path': '/name', 'value': '[test]', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bf486e9e-abb0-42ad-b81f-c6288b39ca88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update allocation with invalid name '[test]'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.test_base.TestBase.test_api_setup [0.609730s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running stamp_revision -> 66bd9c5604d5 {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_multi [0.041708s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/5ff217b1-8bba-42cc-b1ca-9f4b850fe5e2 WITH [{'path': '/extra/foo2', 'value': 'new value', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bf8a7376-0bb5-4d35-907d-aaba672f40d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5ff217b1-8bba-42cc-b1ca-9f4b850fe5e2", "created_at": "2025-11-11T18:57:47.253706+00:00", "updated_at": "2025-11-11T18:57:47.266797+00:00", "candidate_nodes": [], "extra": {"foo1": "bar1", "foo2": "new value", "foo3": "bar3"}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/5ff217b1-8bba-42cc-b1ca-9f4b850fe5e2", "rel": "self"}, {"href": "http://localhost/allocations/5ff217b1-8bba-42cc-b1ca-9f4b850fe5e2", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/5ff217b1-8bba-42cc-b1ca-9f4b850fe5e2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22975324-d073-4196-893f-19618685fe67 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5ff217b1-8bba-42cc-b1ca-9f4b850fe5e2", "created_at": "2025-11-11T18:57:47.253706+00:00", "updated_at": "2025-11-11T18:57:47.266797+00:00", "candidate_nodes": [], "extra": {"foo1": "bar1", "foo2": "new value", "foo3": "bar3"}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/5ff217b1-8bba-42cc-b1ca-9f4b850fe5e2", "rel": "self"}, {"href": "http://localhost/allocations/5ff217b1-8bba-42cc-b1ca-9f4b850fe5e2", "rel": "bookmark"}], "node_uuid": null} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_id [0.510719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/06e27c63-3e7c-4e49-ad59-ad2c1a2279a5 GOT Response: 204 No Content Openstack-Request-Id: req-ddd19fa8-893a-4d0e-a8e1-d1105976e5bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 Captured stderr: ~~~~~~~~~~~~~~~~ INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running stamp_revision -> 66bd9c5604d5 {1} ironic.tests.unit.api.controllers.test_base.TestBase.test_bad_uri [0.055243s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/bad/path WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_name_with_none [0.040838s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/4d98926f-85bc-4c01-9d3a-fa793031730d WITH [{'path': '/name', 'value': None, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93ac1436-e910-40d9-8784-691b77b67200 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4d98926f-85bc-4c01-9d3a-fa793031730d", "created_at": "2025-11-11T18:57:47.294417+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/4d98926f-85bc-4c01-9d3a-fa793031730d", "rel": "self"}, {"href": "http://localhost/allocations/4d98926f-85bc-4c01-9d3a-fa793031730d", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/4d98926f-85bc-4c01-9d3a-fa793031730d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-abca170a-1d8c-4ffc-b0f3-b9197802fdb1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4d98926f-85bc-4c01-9d3a-fa793031730d", "created_at": "2025-11-11T18:57:47.294417+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/4d98926f-85bc-4c01-9d3a-fa793031730d", "rel": "self"}, {"href": "http://localhost/allocations/4d98926f-85bc-4c01-9d3a-fa793031730d", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_singular [0.043660s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/7005fa71-1b5d-4f09-ab8a-dab0c38efbaf WITH [{'path': '/name', 'value': 'test', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-25f1fa42-750b-4282-8e32-18a886028e2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7005fa71-1b5d-4f09-ab8a-dab0c38efbaf", "created_at": "2025-11-11T18:57:47.335946+00:00", "updated_at": "2000-01-01T00:00:00+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": "test", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/7005fa71-1b5d-4f09-ab8a-dab0c38efbaf", "rel": "self"}, {"href": "http://localhost/allocations/7005fa71-1b5d-4f09-ab8a-dab0c38efbaf", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/7005fa71-1b5d-4f09-ab8a-dab0c38efbaf WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-496631cf-c942-4213-9bc2-ef74f56ca875 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7005fa71-1b5d-4f09-ab8a-dab0c38efbaf", "created_at": "2025-11-11T18:57:47.335946+00:00", "updated_at": "2000-01-01T00:00:00+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": "test", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/7005fa71-1b5d-4f09-ab8a-dab0c38efbaf", "rel": "self"}, {"href": "http://localhost/allocations/7005fa71-1b5d-4f09-ab8a-dab0c38efbaf", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_equals [0.052311s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name [0.073791s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/alloc1 GOT Response: 204 No Content Openstack-Request-Id: req-d0ae73e5-b1a2-451c-8a42-d8a1041dcb56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_error [0.040625s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/9f40199a-4af6-43ec-87d6-657fecd59adc WITH [{'path': '/name', 'value': 'new', 'op': 'replace'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-dea53631-d5f0-49c7-8d9a-f92258657aee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_greaterthan [0.044679s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_allowed [0.028654s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/7cfdabfb-c420-431f-9045-df82b9600c49 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 405 Method Not Allowed Content-Type: application/json Openstack-Request-Id: req-08297887-3854-41c3-8a15-beab8d4b0311 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.56 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The API version does not allow updating allocations\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_init [0.030644s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbid_owner_proj_mismatch [0.410637s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?owner=54321 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2be762c1-5e2e-4bea-a78f-4d025ff4b56f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} Captured stderr: ~~~~~~~~~~~~~~~~ INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running stamp_revision -> 66bd9c5604d5 {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_not_existed [0.067562s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/blah GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7b4d6599-2550-4bf7-8136-6bc25ae2b891 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation blah could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_lessthan [0.023851s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_found [0.030532s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/600fd4ca-aed3-4a55-ae45-d881d55aec72 WITH [{'path': '/name', 'value': 'b', 'op': 'replace'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-31e93e89-3244-4ad5-9bb1-f5b056bf910d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 600fd4ca-aed3-4a55-ae45-d881d55aec72 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbidden [0.029845s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a45849eb-fd9e-488d-9fb3-8537314ce933 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_not_equals [0.023750s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_owner_not_acceptable [0.031736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/51671934-8177-404c-a928-724f9fd435b9 WITH [{'path': '/owner', 'value': '54321', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3b8da6d3-5cdd-41d7-ae76-858ab3b1f68b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /owner. Only the following can be updated: name, extra\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbidden_no_project [0.031591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b9c6b859-f02d-4e7e-a08f-7b0b1633465d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_bad_length [0.023576s] ... ok {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_latest [0.022745s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_invalid_api_version [0.029885s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow allocations\"}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_with_json [0.085912s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/alloc1.json GOT Response: 204 No Content Openstack-Request-Id: req-6d731b25-2f6e-4783-a641-64208e4e3de7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links [0.058268s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a78eb89f-3b46-4db6-94f9-2813f6ed03ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": [{"uuid": "ed6f5350-487d-4352-b35b-6719092a91be", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/ed6f5350-487d-4352-b35b-6719092a91be", "rel": "self"}, {"href": "http://localhost/chassis/ed6f5350-487d-4352-b35b-6719092a91be", "rel": "bookmark"}]}, {"uuid": "7acd1e61-8749-4bbb-91a8-3eced511fb10", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/7acd1e61-8749-4bbb-91a8-3eced511fb10", "rel": "self"}, {"href": "http://localhost/chassis/7acd1e61-8749-4bbb-91a8-3eced511fb10", "rel": "bookmark"}]}, {"uuid": "4f258df4-c674-47d0-867c-e9e0514632c9", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/4f258df4-c674-47d0-867c-e9e0514632c9", "rel": "self"}, {"href": "http://localhost/chassis/4f258df4-c674-47d0-867c-e9e0514632c9", "rel": "bookmark"}]}], "next": "http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=uuid,description&limit=3&marker=4f258df4-c674-47d0-867c-e9e0514632c9"} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_ok [0.023052s] ... ok {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_new_standard_singular_header_ok [0.024379s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_non_admin [0.041903s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-51e49719-6d82-48cf-ad34-192f569e9ddd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"allocations": [{"uuid": "4b75f106-ffe6-4b43-b16f-b2f7a539eeb9", "created_at": "2025-11-11T18:57:47.564798+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/4b75f106-ffe6-4b43-b16f-b2f7a539eeb9", "rel": "self"}, {"href": "http://localhost/allocations/4b75f106-ffe6-4b43-b16f-b2f7a539eeb9", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "be038753-faeb-492e-aa9b-4f06857e0dcc", "created_at": "2025-11-11T18:57:47.565689+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/be038753-faeb-492e-aa9b-4f06857e0dcc", "rel": "self"}, {"href": "http://localhost/allocations/be038753-faeb-492e-aa9b-4f06857e0dcc", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "24d5df2d-c50a-452d-a64b-428367650dd8", "created_at": "2025-11-11T18:57:47.566527+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/24d5df2d-c50a-452d-a64b-428367650dd8", "rel": "self"}, {"href": "http://localhost/allocations/24d5df2d-c50a-452d-a64b-428367650dd8", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "d7b8a536-11dd-42af-8f0b-b5bba1f16d6e", "created_at": "2025-11-11T18:57:47.567390+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d7b8a536-11dd-42af-8f0b-b5bba1f16d6e", "rel": "self"}, {"href": "http://localhost/allocations/d7b8a536-11dd-42af-8f0b-b5bba1f16d6e", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "03d79cd3-bef8-4e17-8045-9c09df3781d2", "created_at": "2025-11-11T18:57:47.568202+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/03d79cd3-bef8-4e17-8045-9c09df3781d2", "rel": "self"}, {"href": "http://localhost/allocations/03d79cd3-bef8-4e17-8045-9c09df3781d2", "rel": "bookmark"}], "node_uuid": null}]} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_no_header [0.022709s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_with_json_not_found [0.065985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/alloc1.json GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-038910be-4903-4e09-9dad-d793dad3f6ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation alloc1.json could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_custom_fields [0.067979s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?fields=extra,uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6d1b357f-1b45-4cc0-9ac8-a028d99e257b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "4fdcd3dd-e052-4e36-b480-3af5c2a80682", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/4fdcd3dd-e052-4e36-b480-3af5c2a80682", "rel": "self"}, {"href": "http://localhost/chassis/4fdcd3dd-e052-4e36-b480-3af5c2a80682", "rel": "bookmark"}]}, {"uuid": "b71cf1cd-270f-42b0-8b84-fd603ef75d71", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/b71cf1cd-270f-42b0-8b84-fd603ef75d71", "rel": "self"}, {"href": "http://localhost/chassis/b71cf1cd-270f-42b0-8b84-fd603ef75d71", "rel": "bookmark"}]}, {"uuid": "4a5187a8-2914-432b-ba70-621be661bed0", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/4a5187a8-2914-432b-ba70-621be661bed0", "rel": "self"}, {"href": "http://localhost/chassis/4a5187a8-2914-432b-ba70-621be661bed0", "rel": "bookmark"}]}], "next": "http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=extra,uuid&limit=3&marker=4a5187a8-2914-432b-ba70-621be661bed0"} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_repr [0.022722s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_hidden_in_lower_version [0.046201s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/ef4cd15b-bc6b-4383-ba85-227e801a9eb7 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5af01e36-5471-4ec6-870e-fe49752a4c5f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"uuid": "ef4cd15b-bc6b-4383-ba85-227e801a9eb7", "created_at": "2025-11-11T18:57:47.604413+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/ef4cd15b-bc6b-4383-ba85-227e801a9eb7", "rel": "self"}, {"href": "http://localhost/allocations/ef4cd15b-bc6b-4383-ba85-227e801a9eb7", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/ef4cd15b-bc6b-4383-ba85-227e801a9eb7 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-963b29b0-5ab4-4a40-913a-6670603f78dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ef4cd15b-bc6b-4383-ba85-227e801a9eb7", "created_at": "2025-11-11T18:57:47.604413+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/ef4cd15b-bc6b-4383-ba85-227e801a9eb7", "rel": "self"}, {"href": "http://localhost/allocations/ef4cd15b-bc6b-4383-ba85-227e801a9eb7", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.test_base.TestVersion.test_repr_with_strings [0.022924s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node [0.053836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation GOT Response: 204 No Content Openstack-Request-Id: req-b0fcdc35-4781-476c-8c97-482e30fc8a2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_default_limit [0.063050s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-29baafcb-137e-40bb-8c14-898508442549 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": [{"uuid": "529eb8e3-0968-4da8-9030-599742a94698", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/529eb8e3-0968-4da8-9030-599742a94698", "rel": "self"}, {"href": "http://localhost/chassis/529eb8e3-0968-4da8-9030-599742a94698", "rel": "bookmark"}]}, {"uuid": "4bd07f6b-7fdc-4821-90ea-329927a8e385", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/4bd07f6b-7fdc-4821-90ea-329927a8e385", "rel": "self"}, {"href": "http://localhost/chassis/4bd07f6b-7fdc-4821-90ea-329927a8e385", "rel": "bookmark"}]}, {"uuid": "2a06a784-57ce-4a52-8caf-8dd334122e55", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/2a06a784-57ce-4a52-8caf-8dd334122e55", "rel": "self"}, {"href": "http://localhost/chassis/2a06a784-57ce-4a52-8caf-8dd334122e55", "rel": "bookmark"}]}], "next": "http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=uuid,description&limit=3&marker=2a06a784-57ce-4a52-8caf-8dd334122e55"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_invalid_api_version [0.030393s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_null_field [0.071037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/d498740b-b840-4d55-b7df-5522fef631c8 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-66211cad-bd31-486e-a1a1-5ef2cfd25f50 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d498740b-b840-4d55-b7df-5522fef631c8", "created_at": "2025-11-11T18:57:47.678567+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d498740b-b840-4d55-b7df-5522fef631c8", "rel": "self"}, {"href": "http://localhost/allocations/d498740b-b840-4d55-b7df-5522fef631c8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail [0.031809s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b21dfba0-f11c-49e1-820d-abed869db230 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:47.707565+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_not_existed [0.035082s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1818ad11-d48a-44b6-8916-32f9d43f71f2/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-37dd0c75-71af-4bd7-bb21-a4ca59634ccf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation for node 1818ad11-d48a-44b6-8916-32f9d43f71f2 was not found\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_child_node [0.095319s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_against_single [0.036566s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6b291696-f2c1-464e-9b2a-9983b7575ffd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version [0.038204s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/0a437dce-f4a0-4150-b093-20ca088906e3 GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow allocations\"}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_present [0.071155s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/b280d70a-ed6b-4cf0-bf2a-77d5704f9e15 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e9cdbbad-8398-4f49-bc9c-eeda324deb48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b280d70a-ed6b-4cf0-bf2a-77d5704f9e15", "created_at": "2025-11-11T18:57:47.756470+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/b280d70a-ed6b-4cf0-bf2a-77d5704f9e15", "rel": "self"}, {"href": "http://localhost/allocations/b280d70a-ed6b-4cf0-bf2a-77d5704f9e15", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_child_node_list [0.034288s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query [0.033179s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f1989d6-c3f0-4e37-8082-387888d4d4c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:47.778456+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version_without_check [0.043204s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/ba!na!na1 GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow allocations\"}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_invalid_node [0.039882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/node/bf82ae22-6ca7-4b8f-bbe7-c75e99a1c07f/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_not_list [0.037123s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query_false [0.032460s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ba2e5410-1fc7-4156-a050-1231c5b24190 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} GET /v1/chassis?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a64cebde-ec46-48b4-93ac-94fb16684ba8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_node [0.032005s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/ab6395f2-e338-4370-bf81-184cfdf84f59/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-084bad24-8236-40cb-b365-4500badb8a2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node ab6395f2-e338-4370-bf81-184cfdf84f59 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_and_fields [0.026975s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?detail=True&fields=description WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-28c6d5e3-633a-4266-97bb-b5292bd55a1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_resource_not_existed [0.045535s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/node/cfa369c3-87af-41a2-89c7-1e81e53e8f5c/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_args_value_invalid [0.053421s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_false_and_fields [0.028689s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?detail=False&fields=description WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-55ab5cbd-f5c5-47bc-b974-504a68b6dd57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_node_locked [0.041753s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/2baf96a2-84e6-4f67-aa5e-5baf015798eb GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-8f210e6b-5cd7-429c-b0db-7850dc1babac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_using_query_old_version [0.028264s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-991c5a12-bb0c-4a4c-b23f-fbc6261c945b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links [0.048772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-562755be-88ef-4419-abce-3f5ac7a28fef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "20a17276-403e-4795-b129-dd23b7286b2d", "created_at": "2025-11-11T18:57:47.899167+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation0", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/20a17276-403e-4795-b129-dd23b7286b2d", "rel": "self"}, {"href": "http://localhost/allocations/20a17276-403e-4795-b129-dd23b7286b2d", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "dea23054-417b-4863-8c60-fb0005efacf2", "created_at": "2025-11-11T18:57:47.900023+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation1", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/dea23054-417b-4863-8c60-fb0005efacf2", "rel": "self"}, {"href": "http://localhost/allocations/dea23054-417b-4863-8c60-fb0005efacf2", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "f660ebd6-1eae-47fd-87ae-33027219245e", "created_at": "2025-11-11T18:57:47.900850+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation2", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/f660ebd6-1eae-47fd-87ae-33027219245e", "rel": "self"}, {"href": "http://localhost/allocations/f660ebd6-1eae-47fd-87ae-33027219245e", "rel": "bookmark"}], "node_uuid": null}], "next": "http://localhost/v1/allocations?sort_key=id&sort_dir=asc&limit=3&marker=f660ebd6-1eae-47fd-87ae-33027219245e"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill [0.046824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '49a44172-f7ea-41bc-a868-599f06c9aa67', 'owner': None, 'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/49a44172-f7ea-41bc-a868-599f06c9aa67 Openstack-Request-Id: req-0e57377f-8810-4492-8981-f28fef930376 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "49a44172-f7ea-41bc-a868-599f06c9aa67", "created_at": "2025-11-11T18:57:47.920991+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/49a44172-f7ea-41bc-a868-599f06c9aa67", "rel": "self"}, {"href": "http://localhost/allocations/49a44172-f7ea-41bc-a868-599f06c9aa67", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/49a44172-f7ea-41bc-a868-599f06c9aa67 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-86146a1a-6d39-4e8a-b684-9086db24792e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "49a44172-f7ea-41bc-a868-599f06c9aa67", "created_at": "2025-11-11T18:57:47.920991+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/49a44172-f7ea-41bc-a868-599f06c9aa67", "rel": "self"}, {"href": "http://localhost/allocations/49a44172-f7ea-41bc-a868-599f06c9aa67", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_empty [0.027751s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-85b6d51a-f665-4b41-95e5-133f61532120 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_interface_value_invalid [0.057577s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_custom_fields [0.029105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8b4239a4-f983-46a0-b223-d3c64c64cde7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "28e6cf35-82d0-48ad-8d9f-a1d799a0c9d2", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/28e6cf35-82d0-48ad-8d9f-a1d799a0c9d2", "rel": "self"}, {"href": "http://localhost/chassis/28e6cf35-82d0-48ad-8d9f-a1d799a0c9d2", "rel": "bookmark"}]}, {"uuid": "fda72dc5-e80f-4d32-859f-239907e84216", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/fda72dc5-e80f-4d32-859f-239907e84216", "rel": "self"}, {"href": "http://localhost/chassis/fda72dc5-e80f-4d32-859f-239907e84216", "rel": "bookmark"}]}, {"uuid": "2a45d0b3-c629-4d76-816e-a5efa8f12763", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/2a45d0b3-c629-4d76-816e-a5efa8f12763", "rel": "self"}, {"href": "http://localhost/chassis/2a45d0b3-c629-4d76-816e-a5efa8f12763", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links_custom_fields [0.050074s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ca0ddf65-3aad-4686-88be-3f2d125a5a7b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "ba1fc27c-de97-4a4d-a335-d830eb9f1118", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/ba1fc27c-de97-4a4d-a335-d830eb9f1118", "rel": "self"}, {"href": "http://localhost/allocations/ba1fc27c-de97-4a4d-a335-d830eb9f1118", "rel": "bookmark"}]}, {"uuid": "f34e3e6d-7a68-4806-b795-e272a0912f7d", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/f34e3e6d-7a68-4806-b795-e272a0912f7d", "rel": "self"}, {"href": "http://localhost/allocations/f34e3e6d-7a68-4806-b795-e272a0912f7d", "rel": "bookmark"}]}, {"uuid": "daa78813-8236-45bc-9bfb-52784a396d44", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/daa78813-8236-45bc-9bfb-52784a396d44", "rel": "self"}, {"href": "http://localhost/allocations/daa78813-8236-45bc-9bfb-52784a396d44", "rel": "bookmark"}]}], "next": "http://localhost/v1/allocations?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=daa78813-8236-45bc-9bfb-52784a396d44"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_copy_instance_uuid [0.045897s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/228e5c48-fd10-4470-8118-719657c9d32a Openstack-Request-Id: req-119a29d1-8ec5-4d6c-b7f8-457fd5721296 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "228e5c48-fd10-4470-8118-719657c9d32a", "created_at": "2025-11-11T18:57:47.967236+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "bm-super", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/228e5c48-fd10-4470-8118-719657c9d32a", "rel": "self"}, {"href": "http://localhost/allocations/228e5c48-fd10-4470-8118-719657c9d32a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/228e5c48-fd10-4470-8118-719657c9d32a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4ac01f17-4cc3-41f0-bec4-021962962e00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "228e5c48-fd10-4470-8118-719657c9d32a", "created_at": "2025-11-11T18:57:47.967236+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "bm-super", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/228e5c48-fd10-4470-8118-719657c9d32a", "rel": "self"}, {"href": "http://localhost/allocations/228e5c48-fd10-4470-8118-719657c9d32a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_key_invalid [0.058937s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_pagination_no_uuid [0.032697s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?fields=extra&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9b52ba77-fb9c-4069-8065-c5d367c8cd70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"extra": {}, "links": [{"href": "http://localhost/v1/chassis/dab0f81b-b29e-4c83-8450-155b614c9f88", "rel": "self"}, {"href": "http://localhost/chassis/dab0f81b-b29e-4c83-8450-155b614c9f88", "rel": "bookmark"}]}, {"extra": {}, "links": [{"href": "http://localhost/v1/chassis/7fa8375c-40d4-4b81-acec-d13f756739e4", "rel": "self"}, {"href": "http://localhost/chassis/7fa8375c-40d4-4b81-acec-d13f756739e4", "rel": "bookmark"}]}], "next": "http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=extra&limit=2&marker=7fa8375c-40d4-4b81-acec-d13f756739e4"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links_default_limit [0.041486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-269d945f-7a78-42ad-b6ee-afd685c6902f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "e1b5189a-f4ab-4fdd-aa9c-88b2b5d73bae", "created_at": "2025-11-11T18:57:47.999105+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation0", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/e1b5189a-f4ab-4fdd-aa9c-88b2b5d73bae", "rel": "self"}, {"href": "http://localhost/allocations/e1b5189a-f4ab-4fdd-aa9c-88b2b5d73bae", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "ac7d03a7-8e3d-41eb-b49c-875de054cd33", "created_at": "2025-11-11T18:57:47.999972+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation1", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/ac7d03a7-8e3d-41eb-b49c-875de054cd33", "rel": "self"}, {"href": "http://localhost/allocations/ac7d03a7-8e3d-41eb-b49c-875de054cd33", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "bca058a1-1d08-4f6c-a37f-a4af9119dd4d", "created_at": "2025-11-11T18:57:48.000825+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation2", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/bca058a1-1d08-4f6c-a37f-a4af9119dd4d", "rel": "self"}, {"href": "http://localhost/allocations/bca058a1-1d08-4f6c-a37f-a4af9119dd4d", "rel": "bookmark"}], "node_uuid": null}], "next": "http://localhost/v1/allocations?sort_key=id&sort_dir=asc&limit=3&marker=bca058a1-1d08-4f6c-a37f-a4af9119dd4d"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_node_not_found [0.032932s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '3810c540-5d6b-4dd7-be9f-bd9f7c5d0a51', 'owner': None, 'node': 'f088171c-9c2e-4172-abb9-759f389225ff'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2e7c8a20-91b4-413b-a8a1-dbc0503aca0a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node f088171c-9c2e-4172-abb9-759f389225ff could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_api_version [0.027222s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66?fields=uuid,extra WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-99745301-709d-4d2d-b4d4-25c7193eafac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_not_allowed [0.034432s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0658cf6a-0de6-46ce-b2dd-41593a704781 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.57 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot set node when creating an allocation in this API version\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_empty [0.031767s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-976697df-da33-47ba-9eaa-a97daeb4440c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": []} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_min_length_step_value [0.056864s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_custom_fields_invalid_fields [0.028261s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b1027cba-43e8-46f1-a286-44a22a87489f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_with_name [0.047741s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '7cc3d12c-7f62-453e-a45d-ed576944b245', 'owner': None, 'node': 'backfill-me'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/7cc3d12c-7f62-453e-a45d-ed576944b245 Openstack-Request-Id: req-67c10ea4-6ea6-48a9-a4d4-e84b06247675 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7cc3d12c-7f62-453e-a45d-ed576944b245", "created_at": "2025-11-11T18:57:48.083527+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/7cc3d12c-7f62-453e-a45d-ed576944b245", "rel": "self"}, {"href": "http://localhost/allocations/7cc3d12c-7f62-453e-a45d-ed576944b245", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/7cc3d12c-7f62-453e-a45d-ed576944b245 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-96cfed26-60c2-4466-a98d-d7b2f1ad8a87 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7cc3d12c-7f62-453e-a45d-ed576944b245", "created_at": "2025-11-11T18:57:48.083527+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/7cc3d12c-7f62-453e-a45d-ed576944b245", "rel": "self"}, {"href": "http://localhost/allocations/7cc3d12c-7f62-453e-a45d-ed576944b245", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_name [0.055255s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?node=node-1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c518cbf8-4172-4b3f-9102-6406ce23a35a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "76734008-b4d5-4611-b144-8a6dd3fbc8e8", "created_at": "2025-11-11T18:57:48.077498+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation0", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/76734008-b4d5-4611-b144-8a6dd3fbc8e8", "rel": "self"}, {"href": "http://localhost/allocations/76734008-b4d5-4611-b144-8a6dd3fbc8e8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "071a0a97-7c61-4400-a9e9-5d060d83c631", "created_at": "2025-11-11T18:57:48.078344+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation1", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/071a0a97-7c61-4400-a9e9-5d060d83c631", "rel": "self"}, {"href": "http://localhost/allocations/071a0a97-7c61-4400-a9e9-5d060d83c631", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "9c016ffd-a38e-457c-a17d-63f317553fab", "created_at": "2025-11-11T18:57:48.079256+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation2", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/9c016ffd-a38e-457c-a17d-63f317553fab", "rel": "self"}, {"href": "http://localhost/allocations/9c016ffd-a38e-457c-a17d-63f317553fab", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one [0.064537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f331e769-0fd3-4110-a5aa-00a6c8522371 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:48.103138+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_interface [0.063579s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_without_resource_class [0.056250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/9d015ffd-7c2d-4054-b82d-7aab3be30ca2 Openstack-Request-Id: req-02e2980e-6d6a-44f4-93b2-f45eaab42f77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9d015ffd-7c2d-4054-b82d-7aab3be30ca2", "created_at": "2025-11-11T18:57:48.129919+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "bm-super", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/9d015ffd-7c2d-4054-b82d-7aab3be30ca2", "rel": "self"}, {"href": "http://localhost/allocations/9d015ffd-7c2d-4054-b82d-7aab3be30ca2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/9d015ffd-7c2d-4054-b82d-7aab3be30ca2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-abbcbd1d-4020-43f1-ab59-3edc45a4d8d8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9d015ffd-7c2d-4054-b82d-7aab3be30ca2", "created_at": "2025-11-11T18:57:48.129919+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "bm-super", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/9d015ffd-7c2d-4054-b82d-7aab3be30ca2", "rel": "self"}, {"href": "http://localhost/allocations/9d015ffd-7c2d-4054-b82d-7aab3be30ca2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_key [0.027772s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_uuid [0.041570s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-706622d5-d401-41dc-bac3-086d893a4e3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "cd843d1b-69b4-480f-9ed2-f0703db35172", "created_at": "2025-11-11T18:57:48.138389+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/cd843d1b-69b4-480f-9ed2-f0703db35172", "rel": "self"}, {"href": "http://localhost/allocations/cd843d1b-69b4-480f-9ed2-f0703db35172", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one_custom_fields [0.061840s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66?fields=extra,description WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fd1df435-8873-45f4-b972-d06aad5d4eab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_value [0.028991s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_non_existing_node [0.034429s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?node=banana WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cb0d363f-e401-42d5-9e19-238237347516 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node banana could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_not_dict [0.027747s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner [0.036817s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?owner=12345 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d82c6e4b-ca50-473f-a94d-1e5e513fe956 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "3c22686d-c771-4485-8149-130430f2a323", "created_at": "2025-11-11T18:57:48.221000+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation0", "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/3c22686d-c771-4485-8149-130430f2a323", "rel": "self"}, {"href": "http://localhost/allocations/3c22686d-c771-4485-8149-130430f2a323", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "1fbb42a2-f533-4399-a8d4-77d2369741a0", "created_at": "2025-11-11T18:57:48.221850+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation1", "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/1fbb42a2-f533-4399-a8d4-77d2369741a0", "rel": "self"}, {"href": "http://localhost/allocations/1fbb42a2-f533-4399-a8d4-77d2369741a0", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "3ac77949-e3e8-4e40-86cc-9793f5ebe802", "created_at": "2025-11-11T18:57:48.222672+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation2", "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/3ac77949-e3e8-4e40-86cc-9793f5ebe802", "rel": "self"}, {"href": "http://localhost/allocations/3ac77949-e3e8-4e40-86cc-9793f5ebe802", "rel": "bookmark"}], "node_uuid": null}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation [0.080864s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '2bb007e2-bac2-43f7-b556-7879d021a33b', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/2bb007e2-bac2-43f7-b556-7879d021a33b Openstack-Request-Id: req-7a93683e-e9b7-484e-9a4d-66f16c77f5d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2bb007e2-bac2-43f7-b556-7879d021a33b", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/2bb007e2-bac2-43f7-b556-7879d021a33b", "rel": "self"}, {"href": "http://localhost/allocations/2bb007e2-bac2-43f7-b556-7879d021a33b", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/2bb007e2-bac2-43f7-b556-7879d021a33b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4338603f-6bb5-4dff-9b12-b4b7d25c4cea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2bb007e2-bac2-43f7-b556-7879d021a33b", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/2bb007e2-bac2-43f7-b556-7879d021a33b", "rel": "self"}, {"href": "http://localhost/allocations/2bb007e2-bac2-43f7-b556-7879d021a33b", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links [0.069175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2c590c3e-6b57-42b5-878f-f42769a12a96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1087ffde-eaae-422a-ac00-052e1cf595ce", "created_at": "2025-11-11T18:57:48.222070+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce", "rel": "self"}, {"href": "http://localhost/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce/nodes", "rel": "self"}, {"href": "http://localhost/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce/nodes", "rel": "bookmark"}]]} GET /v1/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-95f42e7c-207f-499c-8db3-43a2df79534c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1087ffde-eaae-422a-ac00-052e1cf595ce", "created_at": "2025-11-11T18:57:48.222070+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce", "rel": "self"}, {"href": "http://localhost/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce/nodes", "rel": "self"}, {"href": "http://localhost/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce/nodes", "rel": "bookmark"}]]} GET /chassis/1087ffde-eaae-422a-ac00-052e1cf595ce WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-63879732-a8dd-472f-9bd0-82087ca984bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1087ffde-eaae-422a-ac00-052e1cf595ce", "created_at": "2025-11-11T18:57:48.222070+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce", "rel": "self"}, {"href": "http://localhost/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce/nodes", "rel": "self"}, {"href": "http://localhost/chassis/1087ffde-eaae-422a-ac00-052e1cf595ce/nodes", "rel": "bookmark"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_valid [0.053522s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner_not_allowed [0.033880s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?owner=12345 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-6d75568f-324a-40ca-b47d-10bc83aca6e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_candidate_node_invalid [0.050006s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': ['this/is/not a/node/name'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '1ccf9af2-6e77-4bd9-a033-7fc7a6e1c506', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e5b2c7c8-ca85-4fed-8377-ec0d9c7f9489 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: this/is/not a/node/name\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test_check__check_steps_wrappers [0.024607s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner_not_allowed_mismatch [0.031442s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?owner=12345 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-216c9b92-3c70-465c-90d5-7581b71f9523 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Not authorized.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_candidate_node_not_found [0.035594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': ['1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'fd211402-92bc-475d-a3de-3151d7f374ed', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-504a41c3-b7cb-44be-8427-1b1c4c3c215f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_links_public_url [0.087532s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-122819c6-fd68-4213-870e-8000276405b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "created_at": "2025-11-11T18:57:48.297980+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://foo/v1/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "rel": "self"}, {"href": "http://foo/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "rel": "bookmark"}], "nodes": [[{"href": "http://foo/v1/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6/nodes", "rel": "self"}, {"href": "http://foo/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6/nodes", "rel": "bookmark"}]]} GET /v1/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9515062b-5863-4228-8d1e-63c0c6a728a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "created_at": "2025-11-11T18:57:48.297980+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://foo/v1/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "rel": "self"}, {"href": "http://foo/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "rel": "bookmark"}], "nodes": [[{"href": "http://foo/v1/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6/nodes", "rel": "self"}, {"href": "http://foo/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6/nodes", "rel": "bookmark"}]]} GET /chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2121db3f-71f3-4db0-8894-755326d480c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "created_at": "2025-11-11T18:57:48.297980+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://foo/v1/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "rel": "self"}, {"href": "http://foo/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6", "rel": "bookmark"}], "nodes": [[{"href": "http://foo/v1/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6/nodes", "rel": "self"}, {"href": "http://foo/chassis/dd008ca8-8da7-4d1a-9475-bac5e9e065b6/nodes", "rel": "bookmark"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeFirmwareComponent.test_get_all_firmware_components [0.050452s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/firmware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68683dc6-34e7-4f49-ae94-85a0751c8185 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.86 {"firmware": [{"created_at": "2025-11-11T18:57:48.318860+00:00", "updated_at": null, "component": "BIOS", "initial_version": "v1.0.0", "current_version": "v1.0.0", "last_version_flashed": null}, {"created_at": "2025-11-11T18:57:48.317943+00:00", "updated_at": null, "component": "bmc", "initial_version": "v1.0.0", "current_version": "v1.0.0", "last_version_flashed": null}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_state [0.043083s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?state=allocating WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b413e77d-9585-4d66-a03b-419efbf451ad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "1a49dcdc-f3e0-4f03-a409-44db34675ac8", "created_at": "2025-11-11T18:57:48.334240+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation0", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/1a49dcdc-f3e0-4f03-a409-44db34675ac8", "rel": "self"}, {"href": "http://localhost/allocations/1a49dcdc-f3e0-4f03-a409-44db34675ac8", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "0c5d4357-1c4a-4135-a150-da04834a3cbb", "created_at": "2025-11-11T18:57:48.335077+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation1", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/0c5d4357-1c4a-4135-a150-da04834a3cbb", "rel": "self"}, {"href": "http://localhost/allocations/0c5d4357-1c4a-4135-a150-da04834a3cbb", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "77d6964b-4a55-4d14-961d-be5e80645e0c", "created_at": "2025-11-11T18:57:48.335887+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation2", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/77d6964b-4a55-4d14-961d-be5e80645e0c", "rel": "self"}, {"href": "http://localhost/allocations/77d6964b-4a55-4d14-961d-be5e80645e0c", "rel": "bookmark"}], "node_uuid": null}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_doesnt_contain_id [0.038476s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {'foo': 123}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '2c04beb9-c933-43e0-89dd-3fdc5aee2785', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/2c04beb9-c933-43e0-89dd-3fdc5aee2785 Openstack-Request-Id: req-ceda38c6-53d9-498c-808b-6a7fca35a45b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2c04beb9-c933-43e0-89dd-3fdc5aee2785", "created_at": "2025-11-11T18:57:48.352970+00:00", "updated_at": null, "candidate_nodes": [], "extra": {"foo": 123}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/2c04beb9-c933-43e0-89dd-3fdc5aee2785", "rel": "self"}, {"href": "http://localhost/allocations/2c04beb9-c933-43e0-89dd-3fdc5aee2785", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/2c04beb9-c933-43e0-89dd-3fdc5aee2785 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2b5dccac-d0f1-4704-8214-e8fd7c39aab9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2c04beb9-c933-43e0-89dd-3fdc5aee2785", "created_at": "2025-11-11T18:57:48.352970+00:00", "updated_at": null, "candidate_nodes": [], "extra": {"foo": 123}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/2c04beb9-c933-43e0-89dd-3fdc5aee2785", "rel": "self"}, {"href": "http://localhost/allocations/2c04beb9-c933-43e0-89dd-3fdc5aee2785", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeFirmwareComponent.test_wrong_version_get_all_firmware_components_old_version [0.037099s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/firmware WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_many [0.047865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8bf9b782-dc21-4398-951a-f0f0bf3eda74 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": [{"uuid": "44d7a332-908f-4af7-b9ea-a4b6c96181d4", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/44d7a332-908f-4af7-b9ea-a4b6c96181d4", "rel": "self"}, {"href": "http://localhost/chassis/44d7a332-908f-4af7-b9ea-a4b6c96181d4", "rel": "bookmark"}]}, {"uuid": "b25fefb6-8ebf-4630-a99e-dfaa07a571c4", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/b25fefb6-8ebf-4630-a99e-dfaa07a571c4", "rel": "self"}, {"href": "http://localhost/chassis/b25fefb6-8ebf-4630-a99e-dfaa07a571c4", "rel": "bookmark"}]}, {"uuid": "de6f5fd5-7a9d-491f-93ad-b71e1ceb7ec5", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/de6f5fd5-7a9d-491f-93ad-b71e1ceb7ec5", "rel": "self"}, {"href": "http://localhost/chassis/de6f5fd5-7a9d-491f-93ad-b71e1ceb7ec5", "rel": "bookmark"}]}, {"uuid": "9c2f0c6e-2f52-4e6a-9331-835ee50e3a9f", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/9c2f0c6e-2f52-4e6a-9331-835ee50e3a9f", "rel": "self"}, {"href": "http://localhost/chassis/9c2f0c6e-2f52-4e6a-9331-835ee50e3a9f", "rel": "bookmark"}]}, {"uuid": "5619e25a-695e-4921-b20c-596df5aef3af", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/5619e25a-695e-4921-b20c-596df5aef3af", "rel": "self"}, {"href": "http://localhost/chassis/5619e25a-695e-4921-b20c-596df5aef3af", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_error [0.035697s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '80326188-871d-4f91-8f3d-fdb97a77abdc', 'owner': None} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-a01c26cf-e49d-469c-ab5c-79e74587af39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource [0.075714s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-86382629-cc50-448d-ac0a-3cd2135e76e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f627aff6-bee4-4986-88df-6a3d3b1508df", "created_at": "2025-11-11T18:57:48.398314+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/f627aff6-bee4-4986-88df-6a3d3b1508df", "rel": "self"}, {"href": "http://localhost/allocations/f627aff6-bee4-4986-88df-6a3d3b1508df", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_generate_uuid [0.038432s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/e11c3bf2-4571-4621-80d5-f4f68e0563e8 Openstack-Request-Id: req-1e4735c0-7249-4141-b8c0-5c0f21213610 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e11c3bf2-4571-4621-80d5-f4f68e0563e8", "created_at": "2025-11-11T18:57:48.428166+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/e11c3bf2-4571-4621-80d5-f4f68e0563e8", "rel": "self"}, {"href": "http://localhost/allocations/e11c3bf2-4571-4621-80d5-f4f68e0563e8", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/e11c3bf2-4571-4621-80d5-f4f68e0563e8 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-42f23d6c-a230-48fa-8395-026b3fa4af69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e11c3bf2-4571-4621-80d5-f4f68e0563e8", "created_at": "2025-11-11T18:57:48.428166+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/e11c3bf2-4571-4621-80d5-f4f68e0563e8", "rel": "self"}, {"href": "http://localhost/allocations/e11c3bf2-4571-4621-80d5-f4f68e0563e8", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource [0.050636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f89208a7-fcf8-4d76-8b04-38a7dbf769d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "8565236c-c444-427c-96f3-fc6568944ff3", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/8565236c-c444-427c-96f3-fc6568944ff3", "rel": "self"}, {"href": "http://localhost/nodes/8565236c-c444-427c-96f3-fc6568944ff3", "rel": "bookmark"}]}, {"uuid": "3cac4893-31df-4556-ae05-cfdc6ac05d7e", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/3cac4893-31df-4556-ae05-cfdc6ac05d7e", "rel": "self"}, {"href": "http://localhost/nodes/3cac4893-31df-4556-ae05-cfdc6ac05d7e", "rel": "bookmark"}]}]} GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes?limit=1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7bccc3f8-ac3a-46af-bd61-44533532983a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "8565236c-c444-427c-96f3-fc6568944ff3", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/8565236c-c444-427c-96f3-fc6568944ff3", "rel": "self"}, {"href": "http://localhost/nodes/8565236c-c444-427c-96f3-fc6568944ff3", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=instance_uuid,maintenance,power_state,provision_state,uuid,name&limit=1&marker=8565236c-c444-427c-96f3-fc6568944ff3"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_api_version [0.024539s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '40a1e7fb-7f7d-4212-aec3-8ee5d93883cd', 'owner': None} GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow allocations\"}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_chassis_not_found [0.029177s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/nodes WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ba081ebe-d083-45c2-a608-2545c7111618 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history [0.114020s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bff4b1fa-d39a-4146-a95f-8ccea2da9a7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"history": []} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_link [0.029208s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b58c7855-464f-41d6-8fea-8752c77e2bbf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:48.489733+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_candidate_node_format [0.035776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': ['invalid-format'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '48d69233-8dbd-484b-a01e-250e9fb5c90f', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ed94c8b9-fbd3-4c94-b198-3c22ac4d89ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: invalid-format\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_and_id [0.073922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation/47250c26-4fd8-41b2-bf51-02cc825e4197 WITH {} GOT Response: 405 Method Not Allowed Allow: DELETE, GET Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_invalid_api_version [0.030495s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_no_uuid [0.037265s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/nodes WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-54e3dbb5-83f5-4982-8c2d-160a62339eb7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis id not specified.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_detail [0.052839s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?detail=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e050b077-6659-4659-ba48-7e772bc7b449 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"history": [{"uuid": "4cdd903c-f9ad-4cc4-95bc-dd55a8fc40d5", "created_at": "2025-11-11T18:57:48.532621+00:00", "severity": null, "event_type": null, "event": "meow", "conductor": "cat-tree1", "user": "peaches", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4cdd903c-f9ad-4cc4-95bc-dd55a8fc40d5", "rel": "self"}]}, {"uuid": "1b7e2601-f384-496e-b8c4-5c0240a103fb", "created_at": "2025-11-11T18:57:48.533598+00:00", "severity": null, "event_type": null, "event": "purr", "conductor": "cat-tree2", "user": "sage", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1b7e2601-f384-496e-b8c4-5c0240a103fb", "rel": "self"}]}, {"uuid": "beb4eb7f-0195-4d3e-b7e2-05452589eabd", "created_at": "2025-11-11T18:57:48.534421+00:00", "severity": null, "event_type": null, "event": "grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!", "conductor": "cat-tree3", "user": "bella", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/beb4eb7f-0195-4d3e-b7e2-05452589eabd", "rel": "self"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_trait [0.060956s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': ['CUSTOM_GPU', 'FOO_BAR'], 'uuid': '627d3c89-4d14-4597-853e-39bf2ef7e610', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-56317cd2-7772-48c9-9101-a79860da8e69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for allocation: 'FOO_BAR' is not valid under any of the given schemas. Possible root cause: 'FOO_BAR' does not match '^CUSTOM_[A-Z0-9_]+$'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_with_fields [0.037694s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation?fields=name,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ac48f71e-9b7b-4129-8fd7-7f7e736da1a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"extra": {}, "name": null, "links": [{"href": "http://localhost/v1/allocations/c27be047-d138-48f4-928a-84fb9ac38694", "rel": "self"}, {"href": "http://localhost/allocations/c27be047-d138-48f4-928a-84fb9ac38694", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_entries [0.043397s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a4e1054e-aec8-484c-9629-1258e9545ede X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"history": [{"uuid": "d8a46152-0f16-4665-9613-3f32f6a6aee3", "created_at": "2025-11-11T18:57:48.576852+00:00", "severity": null, "event": "meow", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/d8a46152-0f16-4665-9613-3f32f6a6aee3", "rel": "self"}]}, {"uuid": "a1a1b274-dbf3-442d-a911-de8df1f69d91", "created_at": "2025-11-11T18:57:48.577648+00:00", "severity": null, "event": "purr", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/a1a1b274-dbf3-442d-a911-de8df1f69d91", "rel": "self"}]}, {"uuid": "ff9290a2-b894-47ea-a8a6-d93884908b7b", "created_at": "2025-11-11T18:57:48.578410+00:00", "severity": null, "event": "grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/ff9290a2-b894-47ea-a8a6-d93884908b7b", "rel": "self"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_one [0.059547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7d8375cf-d002-41d6-b1ba-866c489fe1f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_custom_fields [0.045303s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9bea25c4-c1f3-4b13-b3c8-df0a31effca1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "a278d533-9fe4-4233-8703-05ac158793b4", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/a278d533-9fe4-4233-8703-05ac158793b4", "rel": "self"}, {"href": "http://localhost/allocations/a278d533-9fe4-4233-8703-05ac158793b4", "rel": "bookmark"}]}, {"uuid": "06905b76-7ad4-435b-9cbd-0a9e7d259538", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/06905b76-7ad4-435b-9cbd-0a9e7d259538", "rel": "self"}, {"href": "http://localhost/allocations/06905b76-7ad4-435b-9cbd-0a9e7d259538", "rel": "bookmark"}]}, {"uuid": "8aadc5ce-1d15-4232-b8ba-b04e57495428", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/8aadc5ce-1d15-4232-b8ba-b04e57495428", "rel": "self"}, {"href": "http://localhost/allocations/8aadc5ce-1d15-4232-b8ba-b04e57495428", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_old_version [0.036943s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_name_invalid [0.074352s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': 'aa:bb_cc', 'resource_class': 'baremetal', 'traits': [], 'uuid': 'df68a972-5428-417c-970a-e2f33185ad5e', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-92b728d6-227d-4187-a3fc-c144e13f58bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create allocation with invalid name 'aa:bb_cc'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_collection_pagination_no_uuid [0.036038s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?fields=node_uuid&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4c4b5824-6221-49d9-8e71-ffc3a75fd042 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"links": [{"href": "http://localhost/v1/allocations/1b114894-ab6f-4bb9-8d58-b5acf5859f61", "rel": "self"}, {"href": "http://localhost/allocations/1b114894-ab6f-4bb9-8d58-b5acf5859f61", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"links": [{"href": "http://localhost/v1/allocations/f905ea30-4f59-47fc-8728-0a206e57a983", "rel": "self"}, {"href": "http://localhost/allocations/f905ea30-4f59-47fc-8728-0a206e57a983", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/allocations?sort_key=id&sort_dir=asc&fields=node_uuid&limit=2&marker=f905ea30-4f59-47fc-8728-0a206e57a983"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key [0.065519s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6b7aa766-5d25-4341-8c1b-806bbdb40c5d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": [{"uuid": "22fd40c9-c0c2-4c24-81f1-4b1e90b18662", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/22fd40c9-c0c2-4c24-81f1-4b1e90b18662", "rel": "self"}, {"href": "http://localhost/chassis/22fd40c9-c0c2-4c24-81f1-4b1e90b18662", "rel": "bookmark"}]}, {"uuid": "4ce3a9db-e512-47a9-afec-85a6261cfac8", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/4ce3a9db-e512-47a9-afec-85a6261cfac8", "rel": "self"}, {"href": "http://localhost/chassis/4ce3a9db-e512-47a9-afec-85a6261cfac8", "rel": "bookmark"}]}, {"uuid": "9227ed5f-d55a-49b4-b640-a9635dfce8c1", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/9227ed5f-d55a-49b4-b640-a9635dfce8c1", "rel": "self"}, {"href": "http://localhost/chassis/9227ed5f-d55a-49b4-b640-a9635dfce8c1", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_custom_fields_invalid_fields [0.031777s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/77c5f6f2-f9c0-42d1-89e9-749c95d9080a?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-29e1bfbd-afc2-43a9-98de-f9c4e3c14863 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_pagination [0.062146s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a7eb2eeb-18b9-45b6-a86d-b24cbcdf83e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"history": [{"uuid": "43ecaec2-34b3-4281-be6c-ed6cc946f55e", "created_at": "2025-11-11T18:57:48.660071+00:00", "severity": null, "event": "meow", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/43ecaec2-34b3-4281-be6c-ed6cc946f55e", "rel": "self"}]}], "next": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=None&fields=uuid,created_at,severity,event&limit=1&marker=43ecaec2-34b3-4281-be6c-ed6cc946f55e"} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1&marker=43ecaec2-34b3-4281-be6c-ed6cc946f55e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3dc08a96-e713-4540-a2cd-ba082402363e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"history": [{"uuid": "7f29e300-eebb-4c93-9807-4f9f520f77b3", "created_at": "2025-11-11T18:57:48.660872+00:00", "severity": null, "event": "purr", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/7f29e300-eebb-4c93-9807-4f9f520f77b3", "rel": "self"}]}], "next": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=NodeHistory(conductor='cat-tree1',created_at=2025-11-11T18:57:48Z,event='meow',event_type=None,id=1,node_id=1,severity=None,updated_at=None,user='peaches',uuid=43ecaec2-34b3-4281-be6c-ed6cc946f55e)&fields=uuid,created_at,severity,event&limit=1&marker=7f29e300-eebb-4c93-9807-4f9f520f77b3"} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1&marker=7f29e300-eebb-4c93-9807-4f9f520f77b3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-41ca3c8c-a6d9-4b1d-ad44-6bbf8dca424f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"history": [{"uuid": "bfc252b9-e4a6-46eb-8214-b53cfa3bc36d", "created_at": "2025-11-11T18:57:48.661623+00:00", "severity": null, "event": "grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/bfc252b9-e4a6-46eb-8214-b53cfa3bc36d", "rel": "self"}]}], "next": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=NodeHistory(conductor='cat-tree2',created_at=2025-11-11T18:57:48Z,event='purr',event_type=None,id=2,node_id=1,severity=None,updated_at=None,user='sage',uuid=7f29e300-eebb-4c93-9807-4f9f520f77b3)&fields=uuid,created_at,severity,event&limit=1&marker=bfc252b9-e4a6-46eb-8214-b53cfa3bc36d"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_name_ok [0.074401s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': 'foo', 'resource_class': 'baremetal', 'traits': [], 'uuid': '38b6c5dc-34b1-4de1-bd0e-5f6b4483d583', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/38b6c5dc-34b1-4de1-bd0e-5f6b4483d583 Openstack-Request-Id: req-7bc82adc-837f-4e36-ab7a-c6e537ff3bab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "38b6c5dc-34b1-4de1-bd0e-5f6b4483d583", "created_at": "2025-11-11T18:57:48.699380+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "foo", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/38b6c5dc-34b1-4de1-bd0e-5f6b4483d583", "rel": "self"}, {"href": "http://localhost/allocations/38b6c5dc-34b1-4de1-bd0e-5f6b4483d583", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/38b6c5dc-34b1-4de1-bd0e-5f6b4483d583 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-64d9e3f9-138e-41bc-861f-846bcdbb1e5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "38b6c5dc-34b1-4de1-bd0e-5f6b4483d583", "created_at": "2025-11-11T18:57:48.699380+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "foo", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/38b6c5dc-34b1-4de1-bd0e-5f6b4483d583", "rel": "self"}, {"href": "http://localhost/allocations/38b6c5dc-34b1-4de1-bd0e-5f6b4483d583", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key_invalid [0.048725s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-838e969a-02b0-4848-bd51-6a94cd2b157b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/chassis?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c127700d-27ca-40ad-9599-4c4c25011528 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one [0.035039s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/36dfa5cf-fafb-4f48-b822-2e7fdee13960 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9c2414cf-37a7-4105-b70e-72bca9a272fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "36dfa5cf-fafb-4f48-b822-2e7fdee13960", "created_at": "2025-11-11T18:57:48.713595+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/36dfa5cf-fafb-4f48-b822-2e7fdee13960", "rel": "self"}, {"href": "http://localhost/allocations/36dfa5cf-fafb-4f48-b822-2e7fdee13960", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_no_mandatory_field_resource_class [0.033244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'traits': [], 'uuid': '1ac13043-2b22-46d6-af4c-e58d3596fb56', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f9833339-63e3-41cb-93a1-4184094f6432 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The resource_class field is mandatory when not backfilling\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_multi [0.041657s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b8d469fc-2df4-4175-8d16-78650f6c0387 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:48.735707+00:00", "updated_at": "2025-11-11T18:57:48.747707+00:00", "description": "data-center-1-chassis", "extra": {"foo1": "bar1", "foo2": "bar2"}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1979667d-5405-4978-9df2-7a4269200b88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:48.735707+00:00", "updated_at": "2025-11-11T18:57:48.747707+00:00", "description": "data-center-1-chassis", "extra": {"foo1": "bar1", "foo2": "bar2"}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_custom_fields [0.040209s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/86485462-6523-44aa-bcb9-4a33a6bdd42e?fields=resource_class,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-75aff272-88d2-46ec-ab20-b5b9b4612d30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"extra": {}, "resource_class": "baremetal", "links": [{"href": "http://localhost/v1/allocations/86485462-6523-44aa-bcb9-4a33a6bdd42e", "rel": "self"}, {"href": "http://localhost/allocations/86485462-6523-44aa-bcb9-4a33a6bdd42e", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner [0.038275s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'f077142e-34c5-456b-a89d-38b52fbb44ca', 'owner': '12345'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/f077142e-34c5-456b-a89d-38b52fbb44ca Openstack-Request-Id: req-8f16805a-e1df-41e4-9ffa-b58f34324a1e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f077142e-34c5-456b-a89d-38b52fbb44ca", "created_at": "2025-11-11T18:57:48.773094+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/f077142e-34c5-456b-a89d-38b52fbb44ca", "rel": "self"}, {"href": "http://localhost/allocations/f077142e-34c5-456b-a89d-38b52fbb44ca", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/f077142e-34c5-456b-a89d-38b52fbb44ca WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d894d53b-dc4a-4a98-9a6b-ba1ebafa17d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f077142e-34c5-456b-a89d-38b52fbb44ca", "created_at": "2025-11-11T18:57:48.773094+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/f077142e-34c5-456b-a89d-38b52fbb44ca", "rel": "self"}, {"href": "http://localhost/allocations/f077142e-34c5-456b-a89d-38b52fbb44ca", "rel": "bookmark"}], "node_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version [0.028202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/7e0761ae-a101-42d8-ac8a-e3cc4cb4232a WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow allocations\"}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root [0.036433s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'path': '/description', 'value': 'test', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7736cfe9-73c3-4a1b-a357-36ffdc5839cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:48.777935+00:00", "updated_at": "2025-11-11T18:57:48.788549+00:00", "description": "test", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item [0.115793s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/77024fc0-48e3-4ef8-8bd9-3e3d95bddec6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c035ef45-6637-42b5-bb9e-a7874a67d0f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"uuid": "77024fc0-48e3-4ef8-8bd9-3e3d95bddec6", "created_at": "2025-11-11T18:57:48.767392+00:00", "severity": null, "event_type": null, "event": "meow", "conductor": "cat-tree1", "user": "peaches", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/77024fc0-48e3-4ef8-8bd9-3e3d95bddec6", "rel": "self"}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version_without_check [0.025973s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/ba!na!na! WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow allocations\"}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_auto_filled [0.040828s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'fce3bdab-53fa-4904-9880-e8e796e36813', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/fce3bdab-53fa-4904-9880-e8e796e36813 Openstack-Request-Id: req-1b1cee01-bcf5-48a2-b7d1-c3f9880968b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "fce3bdab-53fa-4904-9880-e8e796e36813", "created_at": "2025-11-11T18:57:48.813498+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "123456", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/fce3bdab-53fa-4904-9880-e8e796e36813", "rel": "self"}, {"href": "http://localhost/allocations/fce3bdab-53fa-4904-9880-e8e796e36813", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/fce3bdab-53fa-4904-9880-e8e796e36813 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-35854bac-dff6-460e-8f99-be2a308d4ad0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "fce3bdab-53fa-4904-9880-e8e796e36813", "created_at": "2025-11-11T18:57:48.813498+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "123456", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/fce3bdab-53fa-4904-9880-e8e796e36813", "rel": "self"}, {"href": "http://localhost/allocations/fce3bdab-53fa-4904-9880-e8e796e36813", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root_non_existent [0.031708s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5e72e7c7-3459-492e-8682-7ad22324ce18 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: uuid, extra, description\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_double_json_in_name [0.033348s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/82d39a41-0eb3-4c12-9789-0f108d04a231 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8b5f0294-cc7c-481d-acdc-15cd5c75f298 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "82d39a41-0eb3-4c12-9789-0f108d04a231", "created_at": "2025-11-11T18:57:48.842182+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "pg.json.json", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/82d39a41-0eb3-4c12-9789-0f108d04a231", "rel": "self"}, {"href": "http://localhost/allocations/82d39a41-0eb3-4c12-9789-0f108d04a231", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_allowed [0.032734s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '35ed863e-7528-431a-9276-6fc0d8be5eca', 'owner': '12345'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-4d3d211c-c629-4593-99f7-42a4e1e1ab5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json [0.031624s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/3f8f7979-3485-4e2c-bbd5-0404f53a40be.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1af3b14b-3859-44a3-a15c-f3a4536eccd6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "3f8f7979-3485-4e2c-bbd5-0404f53a40be", "created_at": "2025-11-11T18:57:48.875403+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/3f8f7979-3485-4e2c-bbd5-0404f53a40be", "rel": "self"}, {"href": "http://localhost/allocations/3f8f7979-3485-4e2c-bbd5-0404f53a40be", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_patch_nodes_subresource [0.060417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-356366b8-1c35-4ea6-ae07-614235cee9fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_my_projet_id [0.044582s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '976e54b1-96a4-4daf-992d-e9008ed4499b', 'owner': '12345'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c39a2377-abb8-4adf-893b-db5307613161 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create allocation with an owner Project ID value 12345 not matching the requester Project ID 0987. Policy baremetal:allocation:create_restricted is required for this capability.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_not_found [0.096531s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/52949728-59fc-4651-84c8-b0a16b469372 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e9658ba2-9aba-4bde-b1ec-4e94ca9ffe42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node history record 52949728-59fc-4651-84c8-b0a16b469372 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json_in_name [0.031631s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/d9cd3aa1-4117-45ff-974d-9d032a7d278c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7f04326f-8b04-459f-8718-4a75477dd73f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d9cd3aa1-4117-45ff-974d-9d032a7d278c", "created_at": "2025-11-11T18:57:48.907596+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "pg.json", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d9cd3aa1-4117-45ff-974d-9d032a7d278c", "rel": "self"}, {"href": "http://localhost/allocations/d9cd3aa1-4117-45ff-974d-9d032a7d278c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_multi [0.054505s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9 WITH [{'path': '/extra/foo2', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-60894a8c-6d6f-45fa-9056-ab889241c52b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "a3ad8cda-6849-458f-9d38-09be58ea7ef9", "created_at": "2025-11-11T18:57:48.909100+00:00", "updated_at": "2025-11-11T18:57:48.918561+00:00", "description": "foobar", "extra": {"foo1": "bar1", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9", "rel": "self"}, {"href": "http://localhost/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9/nodes", "rel": "self"}, {"href": "http://localhost/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9/nodes", "rel": "bookmark"}]]} GET /v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1306fa47-0682-428e-8128-a587b94ce05b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "a3ad8cda-6849-458f-9d38-09be58ea7ef9", "created_at": "2025-11-11T18:57:48.909100+00:00", "updated_at": "2025-11-11T18:57:48.918561+00:00", "description": "foobar", "extra": {"foo1": "bar1", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9", "rel": "self"}, {"href": "http://localhost/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9/nodes", "rel": "self"}, {"href": "http://localhost/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9/nodes", "rel": "bookmark"}]]} PATCH /v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9 WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e24fb9d6-9df7-48ac-90a7-8e66b19eaf5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "a3ad8cda-6849-458f-9d38-09be58ea7ef9", "created_at": "2025-11-11T18:57:48.909100+00:00", "updated_at": "2025-11-11T18:57:48.933228+00:00", "description": "foobar", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9", "rel": "self"}, {"href": "http://localhost/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9/nodes", "rel": "self"}, {"href": "http://localhost/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9/nodes", "rel": "bookmark"}]]} GET /v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a35c4b7c-e74f-444a-80dd-ef39fae2b287 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "a3ad8cda-6849-458f-9d38-09be58ea7ef9", "created_at": "2025-11-11T18:57:48.909100+00:00", "updated_at": "2025-11-11T18:57:48.933228+00:00", "description": "foobar", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9", "rel": "self"}, {"href": "http://localhost/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9/nodes", "rel": "self"}, {"href": "http://localhost/chassis/a3ad8cda-6849-458f-9d38-09be58ea7ef9/nodes", "rel": "bookmark"}]]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json_not_found [0.032514s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/38ea54fa-c959-49d3-8194-058d0b5fff57.json WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f427ec2a-1696-4b33-9a26-a49e483ac3ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 38ea54fa-c959-49d3-8194-058d0b5fff57.json could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_resource_class_too_long [0.082638s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'traits': [], 'uuid': 'aa25049a-5f84-49db-be35-a7f7e0d1c7b5', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6ece9ac0-2b41-40d9-9610-2a2085d10467 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for allocation: 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' is too long\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_suffix [0.035395s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/1b8ffe91-0178-423a-b147-a077da3a1637 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a1706176-ef0c-4008-8ea2-ebe245d46ae1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1b8ffe91-0178-423a-b147-a077da3a1637", "created_at": "2025-11-11T18:57:48.974709+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "pg.1", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/1b8ffe91-0178-423a-b147-a077da3a1637", "rel": "self"}, {"href": "http://localhost/allocations/1b8ffe91-0178-423a-b147-a077da3a1637", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_old_version [0.078967s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/1234 WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_owner_field [0.043124s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/e7f0e2d1-8157-470f-803d-ff7fd0ebb01b?fields=owner WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c3c8f482-55a8-4c43-9bbc-607877fa8b06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"owner": "12345", "links": [{"href": "http://localhost/v1/allocations/e7f0e2d1-8157-470f-803d-ff7fd0ebb01b", "rel": "self"}, {"href": "http://localhost/allocations/e7f0e2d1-8157-470f-803d-ff7fd0ebb01b", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_links [0.046087s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/751485f4-84a9-4fe6-8054-ccd1caa23907 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1cf63fdc-37ec-4bfe-91ec-f4916db27a8a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "751485f4-84a9-4fe6-8054-ccd1caa23907", "created_at": "2025-11-11T18:57:49.055360+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/751485f4-84a9-4fe6-8054-ccd1caa23907", "rel": "self"}, {"href": "http://localhost/allocations/751485f4-84a9-4fe6-8054-ccd1caa23907", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/751485f4-84a9-4fe6-8054-ccd1caa23907 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9563f90c-9e55-4f34-9d76-6c03cb27d520 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "751485f4-84a9-4fe6-8054-ccd1caa23907", "created_at": "2025-11-11T18:57:49.055360+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/751485f4-84a9-4fe6-8054-ccd1caa23907", "rel": "self"}, {"href": "http://localhost/allocations/751485f4-84a9-4fe6-8054-ccd1caa23907", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /allocations/751485f4-84a9-4fe6-8054-ccd1caa23907 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f33dac63-c3b1-4b86-b3cf-3389673433bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "751485f4-84a9-4fe6-8054-ccd1caa23907", "created_at": "2025-11-11T18:57:49.055360+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/751485f4-84a9-4fe6-8054-ccd1caa23907", "rel": "self"}, {"href": "http://localhost/allocations/751485f4-84a9-4fe6-8054-ccd1caa23907", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_valid_extra [0.091398s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '5262a19f-0065-4517-93d3-4b2f815c7b9f', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/5262a19f-0065-4517-93d3-4b2f815c7b9f Openstack-Request-Id: req-1f2fa30a-023e-4fe3-bba3-a5d0330432d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5262a19f-0065-4517-93d3-4b2f815c7b9f", "created_at": "2025-11-11T18:57:49.052132+00:00", "updated_at": null, "candidate_nodes": [], "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/5262a19f-0065-4517-93d3-4b2f815c7b9f", "rel": "self"}, {"href": "http://localhost/allocations/5262a19f-0065-4517-93d3-4b2f815c7b9f", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/5262a19f-0065-4517-93d3-4b2f815c7b9f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c67a2a80-4e05-4f87-8fe2-48f4616841a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5262a19f-0065-4517-93d3-4b2f815c7b9f", "created_at": "2025-11-11T18:57:49.052132+00:00", "updated_at": null, "candidate_nodes": [], "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/5262a19f-0065-4517-93d3-4b2f815c7b9f", "rel": "self"}, {"href": "http://localhost/allocations/5262a19f-0065-4517-93d3-4b2f815c7b9f", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardPatch.test_node_add_shard [0.114878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/shard', 'value': 'shard1', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-65d05814-75ce-4a37-933a-e2e105deeb35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:49.043274+00:00", "updated_at": "2013-12-03T06:20:41.184720+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": "node-57.1", "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_many [0.047320s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c2aed345-5473-47f0-8f43-1717ec13046c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "887b44fd-7138-4967-888b-638ea549c77c", "created_at": "2025-11-11T18:57:49.099585+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation0", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/887b44fd-7138-4967-888b-638ea549c77c", "rel": "self"}, {"href": "http://localhost/allocations/887b44fd-7138-4967-888b-638ea549c77c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "67a610a5-4ac3-4d05-86c1-e362beff1045", "created_at": "2025-11-11T18:57:49.101769+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation1", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/67a610a5-4ac3-4d05-86c1-e362beff1045", "rel": "self"}, {"href": "http://localhost/allocations/67a610a5-4ac3-4d05-86c1-e362beff1045", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "f72cad72-6c9a-4462-9ced-68f5e99ca8c4", "created_at": "2025-11-11T18:57:49.102760+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation2", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/f72cad72-6c9a-4462-9ced-68f5e99ca8c4", "rel": "self"}, {"href": "http://localhost/allocations/f72cad72-6c9a-4462-9ced-68f5e99ca8c4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "04b4b39b-bc0b-4299-8a02-4e2371dcc2d8", "created_at": "2025-11-11T18:57:49.103587+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation3", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/04b4b39b-bc0b-4299-8a02-4e2371dcc2d8", "rel": "self"}, {"href": "http://localhost/allocations/04b4b39b-bc0b-4299-8a02-4e2371dcc2d8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "1d864505-7132-4c91-bbf5-0507be75bc1f", "created_at": "2025-11-11T18:57:49.104480+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation4", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/1d864505-7132-4c91-bbf5-0507be75bc1f", "rel": "self"}, {"href": "http://localhost/allocations/1d864505-7132-4c91-bbf5-0507be75bc1f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_non_existent_property_fail [0.188853s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'path': '/extra/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f47cb3cc-df50-4209-96ad-9e7fed2ad544 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardPatch.test_node_add_shard_fail_wrong_version [0.037418s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/shard', 'value': 'shard1', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-c3d70334-e7eb-46d8-b6e4-ed19238764bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_candidate_nodes [0.076316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': ['node-1', '9a4c947d-3682-4294-af51-8de001c14899'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'd75d2d25-3078-470b-9399-5654c0c34f6f', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/d75d2d25-3078-470b-9399-5654c0c34f6f Openstack-Request-Id: req-9f9e875c-3dba-4831-b17a-d469c9efa234 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d75d2d25-3078-470b-9399-5654c0c34f6f", "created_at": "2025-11-11T18:57:49.149460+00:00", "updated_at": null, "candidate_nodes": ["1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "9a4c947d-3682-4294-af51-8de001c14899"], "extra": {}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d75d2d25-3078-470b-9399-5654c0c34f6f", "rel": "self"}, {"href": "http://localhost/allocations/d75d2d25-3078-470b-9399-5654c0c34f6f", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/d75d2d25-3078-470b-9399-5654c0c34f6f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be6b11b8-1d0e-4afe-8735-d83fff9eaf0c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d75d2d25-3078-470b-9399-5654c0c34f6f", "created_at": "2025-11-11T18:57:49.149460+00:00", "updated_at": null, "candidate_nodes": ["1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "9a4c947d-3682-4294-af51-8de001c14899"], "extra": {}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d75d2d25-3078-470b-9399-5654c0c34f6f", "rel": "self"}, {"href": "http://localhost/allocations/d75d2d25-3078-470b-9399-5654c0c34f6f", "rel": "bookmark"}], "node_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_one [0.040401s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e1c9c29-1510-41d2-af1e-e5ff4dd4b95b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "83de3d71-07d7-4c47-bc48-3177cc9b347e", "created_at": "2025-11-11T18:57:49.155154+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/83de3d71-07d7-4c47-bc48-3177cc9b347e", "rel": "self"}, {"href": "http://localhost/allocations/83de3d71-07d7-4c47-bc48-3177cc9b347e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_singular [0.060213s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e WITH [{'path': '/description', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1bbeb59b-dec5-4df0-b047-ea7452896a08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e", "created_at": "2025-11-11T18:57:49.157401+00:00", "updated_at": "2025-11-11T18:57:49.178825+00:00", "description": null, "extra": {"a": "b"}, "links": [{"href": "http://localhost/v1/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e", "rel": "self"}, {"href": "http://localhost/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e/nodes", "rel": "self"}, {"href": "http://localhost/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e/nodes", "rel": "bookmark"}]]} GET /v1/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be468901-99c7-44bf-838e-8c07cadc470b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e", "created_at": "2025-11-11T18:57:49.157401+00:00", "updated_at": "2025-11-11T18:57:49.178825+00:00", "description": null, "extra": {"a": "b"}, "links": [{"href": "http://localhost/v1/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e", "rel": "self"}, {"href": "http://localhost/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e/nodes", "rel": "self"}, {"href": "http://localhost/chassis/dc0e9c94-fa66-4bb2-80b4-0337e0f6dc2e/nodes", "rel": "bookmark"}]]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_no_extra [0.041752s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '0a4f51ad-2f48-4bc0-8847-592961b4a6c0', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/0a4f51ad-2f48-4bc0-8847-592961b4a6c0 Openstack-Request-Id: req-dedc0dc4-606a-40e5-9991-1000626d7aee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0a4f51ad-2f48-4bc0-8847-592961b4a6c0", "created_at": "2025-11-11T18:57:49.197712+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/0a4f51ad-2f48-4bc0-8847-592961b4a6c0", "rel": "self"}, {"href": "http://localhost/allocations/0a4f51ad-2f48-4bc0-8847-592961b4a6c0", "rel": "bookmark"}], "node_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key [0.042157s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b2997e58-ca82-45fe-a35a-a0a7a12c9e3e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "4f08608f-707f-4ee0-95d9-267fcdba2e64", "created_at": "2025-11-11T18:57:49.191128+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation2", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/4f08608f-707f-4ee0-95d9-267fcdba2e64", "rel": "self"}, {"href": "http://localhost/allocations/4f08608f-707f-4ee0-95d9-267fcdba2e64", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "86128009-bde3-4dd9-93d9-dbb05ef93260", "created_at": "2025-11-11T18:57:49.189366+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation0", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/86128009-bde3-4dd9-93d9-dbb05ef93260", "rel": "self"}, {"href": "http://localhost/allocations/86128009-bde3-4dd9-93d9-dbb05ef93260", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "b8883c29-e12b-488f-9edf-8d3df1fba4b1", "created_at": "2025-11-11T18:57:49.190246+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation1", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/b8883c29-e12b-488f-9edf-8d3df1fba4b1", "rel": "self"}, {"href": "http://localhost/allocations/b8883c29-e12b-488f-9edf-8d3df1fba4b1", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_uuid [0.039555s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-39d7dc89-6bca-46d1-bc5e-1895ef000c0e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot overwrite UUID for an existing Chassis.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_allowed [0.042089s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?sort_key=name WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d09c79c1-38f6-4115-95dc-13fa5ed6f2e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "82337a64-0c08-462b-8042-514d1ac9f444", "created_at": "2025-11-11T18:57:49.241462+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation1", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/82337a64-0c08-462b-8042-514d1ac9f444", "rel": "self"}, {"href": "http://localhost/allocations/82337a64-0c08-462b-8042-514d1ac9f444", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "28ac4f16-3b6a-4af4-9d4f-162552875553", "created_at": "2025-11-11T18:57:49.240652+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation2", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/28ac4f16-3b6a-4af4-9d4f-162552875553", "rel": "self"}, {"href": "http://localhost/allocations/28ac4f16-3b6a-4af4-9d4f-162552875553", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "233f446f-98d5-4415-893b-385ef01ad5db", "created_at": "2025-11-11T18:57:49.239783+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": "allocation3", "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/233f446f-98d5-4415-893b-385ef01ad5db", "rel": "self"}, {"href": "http://localhost/allocations/233f446f-98d5-4415-893b-385ef01ad5db", "rel": "bookmark"}], "node_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_multi [0.042154s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac WITH [{'path': '/extra/foo2', 'value': 'new value', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b29e7a6e-d0b0-4c78-805e-237bbf2d33a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e2ab0484-46ed-4682-a1ac-cbc47ae804ac", "created_at": "2025-11-11T18:57:49.253085+00:00", "updated_at": "2025-11-11T18:57:49.263711+00:00", "description": "data-center-1-chassis", "extra": {"foo1": "bar1", "foo2": "new value", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac", "rel": "self"}, {"href": "http://localhost/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac/nodes", "rel": "bookmark"}]]} GET /v1/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bdca4e89-4dac-4691-ab09-d9908b4b941f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e2ab0484-46ed-4682-a1ac-cbc47ae804ac", "created_at": "2025-11-11T18:57:49.253085+00:00", "updated_at": "2025-11-11T18:57:49.263711+00:00", "description": "data-center-1-chassis", "extra": {"foo1": "bar1", "foo2": "new value", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac", "rel": "self"}, {"href": "http://localhost/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e2ab0484-46ed-4682-a1ac-cbc47ae804ac/nodes", "rel": "bookmark"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node [0.136507s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-fc7bb2d8-b7b9-4f6c-9078-09fdc6023cd3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-16237e5b-ce7d-47b4-b803-be490bfc263d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_invalid [0.039053s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-07468170-d6f2-47dc-be45-d5a2180da3d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/allocations?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f262c6f2-b95f-407d-bf9e-22ca4eb520bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/allocations?sort_key=internal_info WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-05dc5598-cfdc-4744-bea6-cfe721ca3346 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"internal_info\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/allocations?sort_key=properties WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0a591dcc-aa74-4b0e-a4ef-f2b4133967a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"properties\\\" is an invalid field for sorting\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_singular [0.038077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'path': '/description', 'value': 'chassis-new-description', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ce55da0c-d72c-460c-89f5-8e78a57095ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:49.294259+00:00", "updated_at": "2000-01-01T00:00:00+00:00", "description": "chassis-new-description", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-32247932-7dca-4fda-9d2b-516c06c7fff6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:49.294259+00:00", "updated_at": "2000-01-01T00:00:00+00:00", "description": "chassis-new-description", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis [0.055330s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 204 No Content Openstack-Request-Id: req-f95af5cc-bb86-4963-92a7-18e97c8f59b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fede881e-43de-4e2b-ad35-3da6fb302cc4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis e74c40e0-d825-11e2-a28f-0800200c9a66 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_update_error [0.037150s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'path': '/description', 'value': 'new', 'op': 'replace'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-4eb6386f-b87b-48c3-a6d4-dada44f5a34d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_update_not_found [0.033293s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/f9137afc-ad47-4af4-aa4f-04085e0a174e WITH [{'path': '/extra/a', 'value': 'b', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b48d966d-8ebb-4b43-ac88-8abc22bcc3ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis f9137afc-ad47-4af4-aa4f-04085e0a174e could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_not_found [0.057589s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/a220c0d8-a519-4e51-b67a-2766b2ef1080 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-02224eae-4f74-4b20-ac97-67ce1463e88e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis a220c0d8-a519-4e51-b67a-2766b2ef1080 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create [0.048198s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2 Openstack-Request-Id: req-e3547be4-47d6-41f2-a6a9-0ba15aa94a5e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2", "rel": "self"}, {"href": "http://localhost/deploy_templates/f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /v1/deploy_templates/f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3cf41279-2467-406e-9d2c-1415bd3bf43b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2", "rel": "self"}, {"href": "http://localhost/deploy_templates/f1e02cc9-cd4a-45a8-8ca1-b568d40e7bf2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_traits [0.237105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': ['CUSTOM_GPU', 'CUSTOM_FOO_BAR'], 'uuid': '57028338-2334-4503-938e-665cf37a0d83', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/57028338-2334-4503-938e-665cf37a0d83 Openstack-Request-Id: req-7bea451a-59f5-4312-aa71-33b8ecbb26f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "57028338-2334-4503-938e-665cf37a0d83", "created_at": "2025-11-11T18:57:49.431008+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": ["CUSTOM_GPU", "CUSTOM_FOO_BAR"], "links": [{"href": "http://localhost/v1/allocations/57028338-2334-4503-938e-665cf37a0d83", "rel": "self"}, {"href": "http://localhost/allocations/57028338-2334-4503-938e-665cf37a0d83", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/57028338-2334-4503-938e-665cf37a0d83 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-861acc2f-c4dc-4400-a7c2-495ebbe10eff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "57028338-2334-4503-938e-665cf37a0d83", "created_at": "2025-11-11T18:57:49.431008+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": ["CUSTOM_GPU", "CUSTOM_FOO_BAR"], "links": [{"href": "http://localhost/v1/allocations/57028338-2334-4503-938e-665cf37a0d83", "rel": "self"}, {"href": "http://localhost/allocations/57028338-2334-4503-938e-665cf37a0d83", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean [0.154489s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'automated_clean': True, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-98067066-8202-4651-a32c-a093c603b11f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:49.410223+00:00", "updated_at": null, "automated_clean": true, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a62eee5c-d761-46d5-b31e-82a38d5bc703 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:49.410223+00:00", "updated_at": null, "automated_clean": true, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "co nductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_with_node [0.066681s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-50958f6a-c65c-4b59-af95-08e0affa9551 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot complete the requested action because chassis e74c40e0-d825-11e2-a28f-0800200c9a66 contains nodes.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_complex_step_args [0.039430s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '905297e9-94c7-4f27-9924-d5967b3fd337', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': [{'bar': 'baz'}]}, 'priority': 10}], 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/905297e9-94c7-4f27-9924-d5967b3fd337 Openstack-Request-Id: req-c87ef4af-6c04-469a-9a77-a078a286f222 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "905297e9-94c7-4f27-9924-d5967b3fd337", "created_at": "2025-11-11T18:57:49.467749+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/905297e9-94c7-4f27-9924-d5967b3fd337", "rel": "self"}, {"href": "http://localhost/deploy_templates/905297e9-94c7-4f27-9924-d5967b3fd337", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"foo": [{"bar": "baz"}]}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_by_node_not_allowed [0.037997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '66b594e1-b910-48a7-8d18-81313dd00474', 'owner': None} GOT Response: 405 Method Not Allowed Allow: DELETE, GET Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_doesnt_contain_id [0.045991s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'f2669804-4619-4a13-9ca7-3e630b67617a', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/f2669804-4619-4a13-9ca7-3e630b67617a Openstack-Request-Id: req-e976f2c2-5252-4302-a0e5-32f24f64fcaf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f2669804-4619-4a13-9ca7-3e630b67617a", "created_at": "2025-11-11T18:57:49.508500+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/f2669804-4619-4a13-9ca7-3e630b67617a", "rel": "self"}, {"href": "http://localhost/deploy_templates/f2669804-4619-4a13-9ca7-3e630b67617a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /v1/deploy_templates/f2669804-4619-4a13-9ca7-3e630b67617a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e0d94e5d-1d5e-4bdb-8a18-e19e294e3e47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f2669804-4619-4a13-9ca7-3e630b67617a", "created_at": "2025-11-11T18:57:49.508500+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/f2669804-4619-4a13-9ca7-3e630b67617a", "rel": "self"}, {"href": "http://localhost/deploy_templates/f2669804-4619-4a13-9ca7-3e630b67617a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_nodes_subresource [0.057359s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b8fa35be-ff0e-4a58-a3a5-8f7ca7cfd9e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean_old_api_version [0.089746s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'automated_clean': True, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-ad404b14-977d-4f5d-ac47-201a2eb40c5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_node_uuid_not_allowed [0.057999s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '2e804737-3b7a-43b0-b011-cb049a83d9cb', 'owner': None, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-28afc1b6-74f4-417b-9322-046c935f030a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for allocation: Additional properties are not allowed ('node_uuid' was unexpected)\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_get_next [0.023838s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_error [0.036857s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '8c84f9e7-e826-4689-ab26-d60565cd1b27', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-31891b14-d5d5-4d7f-9e3f-92e3e5b9abbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_has_next [0.020766s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_generate_uuid [0.044664s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/efe48c57-e1f0-4332-8240-70871af8f4fe Openstack-Request-Id: req-a72ad5cc-0eb7-4294-a29b-2070c7873e59 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "efe48c57-e1f0-4332-8240-70871af8f4fe", "created_at": "2025-11-11T18:57:49.591192+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/efe48c57-e1f0-4332-8240-70871af8f4fe", "rel": "self"}, {"href": "http://localhost/deploy_templates/efe48c57-e1f0-4332-8240-70871af8f4fe", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /v1/deploy_templates/efe48c57-e1f0-4332-8240-70871af8f4fe WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3e42bf8c-9991-4ff0-953e-4b7f4fe513c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "efe48c57-e1f0-4332-8240-70871af8f4fe", "created_at": "2025-11-11T18:57:49.591192+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/efe48c57-e1f0-4332-8240-70871af8f4fe", "rel": "self"}, {"href": "http://localhost/deploy_templates/efe48c57-e1f0-4332-8240-70871af8f4fe", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_deprecated_without_owner [0.085559s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '4f866681-e318-4673-ba04-8654b18a4f2f', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/4f866681-e318-4673-ba04-8654b18a4f2f Openstack-Request-Id: req-59bada64-d02c-4ddf-9ab1-a789705bdec1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "4f866681-e318-4673-ba04-8654b18a4f2f", "created_at": "2025-11-11T18:57:49.610669+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/4f866681-e318-4673-ba04-8654b18a4f2f", "rel": "self"}, {"href": "http://localhost/allocations/4f866681-e318-4673-ba04-8654b18a4f2f", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/4f866681-e318-4673-ba04-8654b18a4f2f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-26c89c2d-3b88-48d8-88fc-a03cccfe24a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "4f866681-e318-4673-ba04-8654b18a4f2f", "created_at": "2025-11-11T18:57:49.610669+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/4f866681-e318-4673-ba04-8654b18a4f2f", "rel": "self"}, {"href": "http://localhost/allocations/4f866681-e318-4673-ba04-8654b18a4f2f", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_api_version [0.031521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '0395c7db-ec1f-4d1c-9690-4b03b080657b', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow deploy templates\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_always_in_response [0.111149s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-791452d4-8ac7-45f6-ab18-4b15b334d779 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-41811ffb-8253-4ba2-a33e-6ef538f21331 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': 'dffa187b-2959-442f-950f-5e477121a228', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/dffa187b-2959-442f-950f-5e477121a228 Openstack-Request-Id: req-d3d61d75-1e2e-45c1-a5e2-918b4852abed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "dffa187b-2959-442f-950f-5e477121a228", "created_at": "2000-01-01T00:00:00+00:00", "upda ted_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/dffa187b-2959-442f-950f-5e477121a228", "rel": "self"}, {"href": "http://localhost/nodes/dffa187b-2959-442f-950f-5e477121a228", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/dffa187b-2959-442f-950f-5e477121a228/ports", "rel": "self"}, {"href": "http://localhost/nodes/dffa187b-2959-442f-950f-5e477121a228/ports", "rel": "bookmark"}]} GET /v1/nodes/dffa187b-2959-442f-950f-5e477121a228 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7dd44f92-3fd9-42fb-b590-c309977941d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "dffa187b-2959-442f-950f-5e477121a228", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/dffa187b-2959-442f-950f-5e477121a228", "rel": "self"}, {"href": "http://localhost/nodes/dffa187b-2959-442f-950f-5e477121a228", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/dffa187b-2959-442f-950f-5e477121a228/ports", "rel": "self"}, {"href": "http://localhost/nodes/dffa187b-2959-442f-950f-5e477121a228/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_empty_steps [0.035789s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '3237de48-c318-4d01-be3e-0b9a5cd89d35', 'steps': [], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d9d49491-f90e-4252-b552-550658f6f95e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: [] is too short\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_extra [0.031502s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '83849d9b-caed-4f88-9fd4-3e48a634b769', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': 42} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-49d48fc4-0fbe-455d-b544-864d2979d5b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'object', 'null'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_forbidden [0.072384s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '685c579c-3bf3-4ef1-9dab-439600084a77', 'owner': None} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ff829527-0e39-46c2-9f5f-f7bfb4ca2efe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_foo [0.031412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'efd5932d-b1fe-462d-853e-26380636851d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}, 'foo': 'bar'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d5a0b11d-b8e3-49fa-a01c-76cafb71a74f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: Additional properties are not allowed ('foo' was unexpected)\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name [0.032532s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 42, 'uuid': 'd269cf9e-06ad-4fae-907a-401e54ea4948', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-06c7bfaa-c4ca-47d9-a0ac-841a51190cab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'string'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_not_found [0.129187s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bfdbdd5b-b669-4e92-bd6e-47dbed54997b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_list_convert_with_links [0.204344s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_normal [0.087338s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '304e2e2f-06b2-4b3e-b615-20cb725dec47', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/304e2e2f-06b2-4b3e-b615-20cb725dec47 Openstack-Request-Id: req-bd3c7e11-8247-4afa-ba37-5437d57c42e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "304e2e2f-06b2-4b3e-b615-20cb725dec47", "created_at": "2025-11-11T18:57:49.781772+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/304e2e2f-06b2-4b3e-b615-20cb725dec47", "rel": "self"}, {"href": "http://localhost/allocations/304e2e2f-06b2-4b3e-b615-20cb725dec47", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/304e2e2f-06b2-4b3e-b615-20cb725dec47 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a5d621e3-de8b-4904-98d5-7228ed7a9ed0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "304e2e2f-06b2-4b3e-b615-20cb725dec47", "created_at": "2025-11-11T18:57:49.781772+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/304e2e2f-06b2-4b3e-b615-20cb725dec47", "rel": "self"}, {"href": "http://localhost/allocations/304e2e2f-06b2-4b3e-b615-20cb725dec47", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name_none [0.051923s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': None, 'uuid': '4688ace9-bb06-47c8-8642-bf38f5bc4269', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-96e8e1fc-82fb-42f2-a979-c1f0de49b0a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: None is not of type 'string'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name [0.038636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/CUSTOM_DT1 GOT Response: 204 No Content Openstack-Request-Id: req-83492c10-4b7a-4b5c-9613-d52db87a93c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_non_existent [0.029811s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/blah GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9404e7d6-c790-4c7b-98dd-6e4c851eb6d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template blah could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_older_version [0.090147s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '1a885c9d-9d0c-4590-890d-1f32ec41f5b3'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/1a885c9d-9d0c-4590-890d-1f32ec41f5b3 Openstack-Request-Id: req-45f17313-d760-44ce-a39f-278fbf1ed82f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"uuid": "1a885c9d-9d0c-4590-890d-1f32ec41f5b3", "created_at": "2025-11-11T18:57:49.865934+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/1a885c9d-9d0c-4590-890d-1f32ec41f5b3", "rel": "self"}, {"href": "http://localhost/allocations/1a885c9d-9d0c-4590-890d-1f32ec41f5b3", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/1a885c9d-9d0c-4590-890d-1f32ec41f5b3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-90c25e42-5ced-46b5-b66f-02379e8471b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"uuid": "1a885c9d-9d0c-4590-890d-1f32ec41f5b3", "created_at": "2025-11-11T18:57:49.865934+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/1a885c9d-9d0c-4590-890d-1f32ec41f5b3", "rel": "self"}, {"href": "http://localhost/allocations/1a885c9d-9d0c-4590-890d-1f32ec41f5b3", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_steps [0.068879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'a217c9b9-6db5-497f-9289-05f2c462f0d9', 'steps': {}, 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1f864dcb-bcb0-4d77-8c64-f622073044d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: {} is not of type 'array'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_with_json [0.036516s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/CUSTOM_DT1.json GOT Response: 204 No Content Openstack-Request-Id: req-7c12ff4d-618a-4f1f-91ad-afc5cdba5e46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name_with_json_not_found [0.032886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/CUSTOM_DT1.json GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e601ac1c-d847-4535-90f5-62d9a13725dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template CUSTOM_DT1.json could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_mismatch_owner [0.063951s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'dcaec442-283b-4e96-a9d0-5d7ea5e077e4', 'owner': '54321'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-973c22ab-0761-4a27-a4a1-8edd704adef2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args1 [0.068703s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '6df4a988-551a-488f-8868-37b5bd95672c', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': 'not a dict', 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-72659109-9629-4dc8-b0b0-c91c0343c4c0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'not a dict' is not of type 'object'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid [0.035849s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/cb0ae7b0-2356-46f0-9c50-fcaff8554068 GOT Response: 204 No Content Openstack-Request-Id: req-ef1c80aa-47b1-4bab-a97d-341a30292828 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid_with_json [0.030270s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/892d2ec9-36f7-469a-beae-f20eeb6f0155.json GOT Response: 204 No Content Openstack-Request-Id: req-7109b0bf-efbd-4496-95d5-6c49944dbb21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_enroll [0.236085s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-5b8345f9-542a-40dc-a7e3-aebeedbf89d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.11 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.003118+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0f01962f-8c0c-432c-8acd-fcf5ab3742b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.003118+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_owner [0.078384s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '996eb126-4ed2-44ca-ac85-080d032abe12', 'owner': '12345'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/996eb126-4ed2-44ca-ac85-080d032abe12 Openstack-Request-Id: req-a965ac2f-7498-4a2e-bf45-e62565ec38b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "996eb126-4ed2-44ca-ac85-080d032abe12", "created_at": "2025-11-11T18:57:50.016725+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/996eb126-4ed2-44ca-ac85-080d032abe12", "rel": "self"}, {"href": "http://localhost/allocations/996eb126-4ed2-44ca-ac85-080d032abe12", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/996eb126-4ed2-44ca-ac85-080d032abe12 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8369a613-b0e5-4b36-a14f-5d184f5f162d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "996eb126-4ed2-44ca-ac85-080d032abe12", "created_at": "2025-11-11T18:57:50.016725+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "12345", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/996eb126-4ed2-44ca-ac85-080d032abe12", "rel": "self"}, {"href": "http://localhost/allocations/996eb126-4ed2-44ca-ac85-080d032abe12", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args2 [0.070570s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '2f6b095d-701c-4fad-b4a1-603b2b773c02', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': [], 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d6102767-5dbf-42bb-96af-62a95f009115 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: [] is not of type 'object'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis [0.036544s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'data-center-1-chassis'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 Openstack-Request-Id: req-87b54db9-4a6b-4112-989d-453ccfcd71c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9584ff30-d9ca-4068-8312-ec52c0990968 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid_with_json_not_found [0.056493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/86c0dbdc-9d7b-482e-b847-1cc42df14036.json GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a03730f6-9e5b-4fe9-8d74-2600cc1ae0ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template 86c0dbdc-9d7b-482e-b847-1cc42df14036.json could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_foo [0.043289s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '69ce11e5-e297-47e3-b63f-5b4a60f4da82', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10, 'foo': 'bar'}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-291c63e9-a0e8-4005-89c5-5ab816dc86dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: Additional properties are not allowed ('foo' was unexpected)\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_doesnt_contain_id [0.035719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {'foo': 123}, 'description': 'data-center-1-chassis'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 Openstack-Request-Id: req-0d1c21ba-9728-4cfa-8103-42990823a2c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:50.089709+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {"foo": 123}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d3a97b45-2de8-4508-a313-220b2283a701 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:50.089709+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {"foo": 123}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_none [0.088998s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-1b6c4fa7-4f26-4321-9e59-75165e0eda18 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.086929+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-32c05f82-5fd5-49da-afc7-2a503fd47336 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.086929+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cc7be576-4e36-46c8-9f90-c106d6f592a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.086929+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "i nspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface1 [0.039977s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '7dc34ad6-26be-4fc0-b195-273be2a69cb5', 'steps': [{'interface': [3], 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7f81beeb-9b0d-4280-a8c2-51a2a561ae24 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: [3] is not of type 'string'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_invalid_api_version [0.066325s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/bb6da119-7b7e-4bff-b2e9-9f1a761d9bfb GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow deploy templates\"}"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_error [0.032256s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'data-center-1-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-cd9a10df-42db-4434-8ef2-9785a638940e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface2 [0.038259s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '000be214-09f1-422c-ab7c-a52deb1cd12d', 'steps': [{'interface': 'foo', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ef9c682c-0e67-488f-a1ee-b1929dcfffee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'foo' is not one of ['vendor', 'power', 'management', 'firmware', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description [0.080959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'description': 'useful stuff', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-eca9f332-2051-4b12-8675-615bc3a2d0ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.171413+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": "useful stuff", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4116981e-3ad3-4cf0-8958-4c1ffdc783c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.171413+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clea n_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": "useful stuff", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_generate_uuid [0.062438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'extra': {}, 'description': 'data-center-1-chassis'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/659c6d94-a3b3-4804-8dfe-da2fa0cecd06 Openstack-Request-Id: req-9c5af8ee-8e65-4dd0-8ad9-593c25681ce0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "659c6d94-a3b3-4804-8dfe-da2fa0cecd06", "created_at": "2025-11-11T18:57:50.174003+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/659c6d94-a3b3-4804-8dfe-da2fa0cecd06", "rel": "self"}, {"href": "http://localhost/chassis/659c6d94-a3b3-4804-8dfe-da2fa0cecd06", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/659c6d94-a3b3-4804-8dfe-da2fa0cecd06/nodes", "rel": "self"}, {"href": "http://localhost/chassis/659c6d94-a3b3-4804-8dfe-da2fa0cecd06/nodes", "rel": "bookmark"}]]} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d36515ec-1089-429d-ba3c-b3a15d4bb735 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": [{"uuid": "659c6d94-a3b3-4804-8dfe-da2fa0cecd06", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/659c6d94-a3b3-4804-8dfe-da2fa0cecd06", "rel": "self"}, {"href": "http://localhost/chassis/659c6d94-a3b3-4804-8dfe-da2fa0cecd06", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_negative_priority [0.037656s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '7aa3e81e-65c8-4fd9-8f64-ed372a8c13f5', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': -1}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c362c450-0b2f-48bd-ae85-1c8a53d61c16 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: -1 is less than the minimum of 0\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_old_api_version [0.073185s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/CUSTOM_DT1 GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow deploy templates\"}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_priority [0.034682s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'c84416bd-fc9b-4b0e-be4f-966ad0c21047', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 'not a number'}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e5583164-0aa2-49b6-8b7b-d30a6c4f7e07 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'not a number' does not match '^[0-9]+$'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description_oversize [0.054076s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'description': '1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781 234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7cd22596-cc8c-4d63-b959-277ad126601e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: '1234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781 234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed' is too long\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_invalid_description [0.060913s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 1334} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8ef3390a-1df4-47dc-aaad-86ab723d4348 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for chassis: 1334 is not of type 'string', 'null'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links [0.068633s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d19cc093-d942-4eb5-b05e-f29c816a8a7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "1dfd106f-de88-4b6e-9296-4990c21078c9", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/1dfd106f-de88-4b6e-9296-4990c21078c9", "rel": "self"}, {"href": "http://localhost/deploy_templates/1dfd106f-de88-4b6e-9296-4990c21078c9", "rel": "bookmark"}]}, {"uuid": "42fca77c-cf4a-41cb-a00a-01066cdcd566", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/42fca77c-cf4a-41cb-a00a-01066cdcd566", "rel": "self"}, {"href": "http://localhost/deploy_templates/42fca77c-cf4a-41cb-a00a-01066cdcd566", "rel": "bookmark"}]}, {"uuid": "53ab03b6-eacb-4c40-937e-db352e201040", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/53ab03b6-eacb-4c40-937e-db352e201040", "rel": "self"}, {"href": "http://localhost/deploy_templates/53ab03b6-eacb-4c40-937e-db352e201040", "rel": "bookmark"}]}], "next": "http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=53ab03b6-eacb-4c40-937e-db352e201040"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_step [0.040180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '5ec0a040-f8d6-46b4-b5bb-927c05594563', 'steps': [{'interface': 'raid', 'step': 42, 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8cb94f2e-b68c-44ef-b39b-a892c518bfa7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 42 is not of type 'string'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_custom_fields [0.035691s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?fields=uuid,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-09f0fdf0-03c1-45ad-bc49-8067ac5b5202 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "0f003cfd-af46-4e5d-afed-1d030a270024", "links": [{"href": "http://localhost/v1/deploy_templates/0f003cfd-af46-4e5d-afed-1d030a270024", "rel": "self"}, {"href": "http://localhost/deploy_templates/0f003cfd-af46-4e5d-afed-1d030a270024", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "1093c6ad-7181-439f-a7eb-77b1214837cc", "links": [{"href": "http://localhost/v1/deploy_templates/1093c6ad-7181-439f-a7eb-77b1214837cc", "rel": "self"}, {"href": "http://localhost/deploy_templates/1093c6ad-7181-439f-a7eb-77b1214837cc", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "736242af-3289-4542-bb3a-44d357c79f1f", "links": [{"href": "http://localhost/v1/deploy_templates/736242af-3289-4542-bb3a-44d357c79f1f", "rel": "self"}, {"href": "http://localhost/deploy_templates/736242af-3289-4542-bb3a-44d357c79f1f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}], "next": "http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,steps&limit=3&marker=736242af-3289-4542-bb3a-44d357c79f1f"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_toolong_description [0.063454s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-159e512c-2f66-47c5-b47b-c23ffa7b6710 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for chassis: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_long_name [0.039956s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': '24849532-9166-4ea7-8649-8b84fa09216d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/24849532-9166-4ea7-8649-8b84fa09216d Openstack-Request-Id: req-01b4234c-477a-4d34-82d7-200f193146fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "24849532-9166-4ea7-8649-8b84fa09216d", "created_at": "2025-11-11T18:57:50.315459+00:00", "updated_at": null, "name": "CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/24849532-9166-4ea7-8649-8b84fa09216d", "rel": "self"}, {"href": "http://localhost/deploy_templates/24849532-9166-4ea7-8649-8b84fa09216d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_default_limit [0.035694s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5b39b0e6-f68f-4ea4-9ab9-32d8b9799361 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "8dbf8412-63e4-460c-b247-17c9bbc2f0d0", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/8dbf8412-63e4-460c-b247-17c9bbc2f0d0", "rel": "self"}, {"href": "http://localhost/deploy_templates/8dbf8412-63e4-460c-b247-17c9bbc2f0d0", "rel": "bookmark"}]}, {"uuid": "dfe6b96f-e963-4382-bca9-2ab86daf6a7e", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/dfe6b96f-e963-4382-bca9-2ab86daf6a7e", "rel": "self"}, {"href": "http://localhost/deploy_templates/dfe6b96f-e963-4382-bca9-2ab86daf6a7e", "rel": "bookmark"}]}, {"uuid": "e39c7c70-db55-4f49-a1cb-092227f4103a", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/e39c7c70-db55-4f49-a1cb-092227f4103a", "rel": "self"}, {"href": "http://localhost/deploy_templates/e39c7c70-db55-4f49-a1cb-092227f4103a", "rel": "bookmark"}]}], "next": "http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=e39c7c70-db55-4f49-a1cb-092227f4103a"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_doesnt_contain_id [0.115452s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {'foo': 123}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-3666aec9-57b6-43ac-9293-3f38219bbe36 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.345351+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {"foo": 123}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-85e49786-5e44-44a4-a7c6-5db9b2568099 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.345351+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {"foo": 123}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_not_a_trait [0.035378s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'not-a-trait', 'uuid': '60c702d8-94b8-49b5-a634-bbecdeaa3eac', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d30816d0-b5e0-4f89-9358-477fc84d3349 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'not-a-trait' is not valid under any of the given schemas. Possible root cause: 'not-a-trait' does not match '^CUSTOM_[A-Z0-9_]+$'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query [0.029674s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2769220b-bb78-4415-8255-dfc36b150cf8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "3a8bde37-416f-45f8-86f9-2b2ce8109254", "created_at": "2025-11-11T18:57:50.366592+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/3a8bde37-416f-45f8-86f9-2b2ce8109254", "rel": "self"}, {"href": "http://localhost/deploy_templates/3a8bde37-416f-45f8-86f9-2b2ce8109254", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}]} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_unicode_description [0.068627s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {}, 'description': 'амо'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 Openstack-Request-Id: req-fa987f73-3f75-4602-b2cb-4beed572a13a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:50.371494+00:00", "updated_at": null, "description": "\u0430\u043c\u043e", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9a09ac89-3542-4dbc-b860-86198abfc565 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:50.371494+00:00", "updated_at": null, "description": "\u0430\u043c\u043e", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_too_long [0.039465s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': 'c09c415f-813b-46d4-823e-2eba31abec99', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-246426c1-230c-486f-b8fd-bcbd1eeaebee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' is too long\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_query_false [0.035427s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-362392e7-f9fa-402b-92e6-b3603feb5b52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "5b843366-ac35-4139-af41-d6aa8ade86e7", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/5b843366-ac35-4139-af41-d6aa8ade86e7", "rel": "self"}, {"href": "http://localhost/deploy_templates/5b843366-ac35-4139-af41-d6aa8ade86e7", "rel": "bookmark"}]}]} GET /v1/deploy_templates?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7be48c85-335c-45db-91d0-b6923a6917e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "5b843366-ac35-4139-af41-d6aa8ade86e7", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/5b843366-ac35-4139-af41-d6aa8ade86e7", "rel": "self"}, {"href": "http://localhost/deploy_templates/5b843366-ac35-4139-af41-d6aa8ade86e7", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_default_conductor_group [0.075773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'conductor_group': 'mouse', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-f33bf136-0fec-4459-9ae4-d8c79b99b7d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.420261+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "conductor_group": "mouse", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-445f2998-11b0-459b-a9e7-17f3f3d278db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.420261+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "conductor_group": "mouse", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive" : "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_sort_key_allowed [0.035898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?sort_key=name&detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c429bf05-e986-4200-bff2-e0d741a3035e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "ee03bf60-13a5-4f08-bb89-1c7bbbda259c", "created_at": "2025-11-11T18:57:50.437657+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/ee03bf60-13a5-4f08-bb89-1c7bbbda259c", "rel": "self"}, {"href": "http://localhost/deploy_templates/ee03bf60-13a5-4f08-bb89-1c7bbbda259c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "d5b432e2-4347-40a8-9cd8-8533acd1a61d", "created_at": "2025-11-11T18:57:50.436308+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/d5b432e2-4347-40a8-9cd8-8533acd1a61d", "rel": "self"}, {"href": "http://localhost/deploy_templates/d5b432e2-4347-40a8-9cd8-8533acd1a61d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "a17a1a52-a6a7-49c7-b84b-7dff5279692e", "created_at": "2025-11-11T18:57:50.434919+00:00", "updated_at": null, "name": "CUSTOM_DT3", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/a17a1a52-a6a7-49c7-b84b-7dff5279692e", "rel": "self"}, {"href": "http://localhost/deploy_templates/a17a1a52-a6a7-49c7-b84b-7dff5279692e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_field_name [0.039286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'uuid': '6da8c691-3197-4fc3-81f9-f7fa035b12c3', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5f9e7a1c-ca5d-475f-8f63-ad69dbb4ad76 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'name' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_valid_extra [0.073138s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'description': 'data-center-1-chassis'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 Openstack-Request-Id: req-fd50dd7d-2814-408e-9643-ff2632de19f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:50.442702+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d521fa77-4f97-4ebd-9a4c-685769f67077 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:57:50.442702+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_field_steps [0.035206s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'eb8289da-7ce1-446e-8c15-ef6f553139a9', 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ceb06217-7c71-4a23-a514-986d778a208f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'steps' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_and_fields [0.039879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dc4a1c83-670d-4e9a-b158-71ad9c0e65b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_network_interface [0.083433s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'network_interface': 'neutron', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-fbaf1be4-2531-4d30-a573-9ab9a09734a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": "neutron", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "reservation": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c4364fb1-ce32-41c0-97c9-6d05305dcb5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": "neutron", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "reservation": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_false_and_fields [0.048156s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?detail=False&fields=steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-19c8254f-38cc-427f-b06d-b335edc9a8e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"links": [{"href": "http://localhost/v1/deploy_templates/67b6b0ea-63c5-425a-aa82-90e5bb32e799", "rel": "self"}, {"href": "http://localhost/deploy_templates/67b6b0ea-63c5-425a-aa82-90e5bb32e799", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_args [0.038432s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'c8ffa8c3-69d8-4841-b7b3-765714d6de9d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6d557ddd-6cc3-456e-bf85-1762c073f340 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'args' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_empty [0.028389s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3232d401-b185-400f-aae2-da9dfeeea26a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": []} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_all_invalid_api_version [0.027489s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow deploy templates\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_resource_class [0.079973s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'resource_class': 'class2', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-9d15e994-0bc1-4eef-a4f6-d8645abf2e5e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.586067+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": "flat", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "class2", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-42d05100-a7d0-46b1-8001-5dfb07ff405c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:50.586067+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": "flat", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "class2", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-0 3f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_post_nodes_subresource [0.142433s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-de14c85f-a910-462e-b68f-9b3142360403 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_interface [0.077538s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '0bb9b8e2-b780-4875-af65-a4cfe151892c', 'steps': [{'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-86760996-e9a5-45a8-9af7-0904ef29c68a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'interface' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_custom_fields [0.034359s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?fields=uuid,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1836e6f4-a59d-4dae-bd78-a12dce57fc95 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "3d5cfb7c-6aa8-483a-a0cb-7d2853a0c9e5", "links": [{"href": "http://localhost/v1/deploy_templates/3d5cfb7c-6aa8-483a-a0cb-7d2853a0c9e5", "rel": "self"}, {"href": "http://localhost/deploy_templates/3d5cfb7c-6aa8-483a-a0cb-7d2853a0c9e5", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "841e038e-ddb3-42d1-aa49-014ac4523a25", "links": [{"href": "http://localhost/v1/deploy_templates/841e038e-ddb3-42d1-aa49-014ac4523a25", "rel": "self"}, {"href": "http://localhost/deploy_templates/841e038e-ddb3-42d1-aa49-014ac4523a25", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "d07118bb-dede-42fa-a06a-98399f126844", "links": [{"href": "http://localhost/v1/deploy_templates/d07118bb-dede-42fa-a06a-98399f126844", "rel": "self"}, {"href": "http://localhost/deploy_templates/d07118bb-dede-42fa-a06a-98399f126844", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_pagination_no_uuid [0.033727s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?fields=name&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ccc8e47a-3797-4923-bb62-8868ea0e8ae5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/b5cdc6c5-688a-44f9-bfec-8dfb6f956d32", "rel": "self"}, {"href": "http://localhost/deploy_templates/b5cdc6c5-688a-44f9-bfec-8dfb6f956d32", "rel": "bookmark"}]}, {"name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/13765ea3-3901-4d91-95f9-04b6289e871e", "rel": "self"}, {"href": "http://localhost/deploy_templates/13765ea3-3901-4d91-95f9-04b6289e871e", "rel": "bookmark"}]}], "next": "http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=13765ea3-3901-4d91-95f9-04b6289e871e"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_priority [0.052404s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '4bcefc32-b4a6-4f8b-a35d-798416ca75a5', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5423f918-7816-4cb8-8671-965dd3604d39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'priority' is a required property\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_storage_interface [0.073924s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'storage_interface': 'cinder', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-a7a28a24-0dc6-4167-ba28-f15492db9fad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "cinder", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f48ed417-905e-4b5c-93c6-3799dbf28b2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_in terface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "cinder", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links [0.085577s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-51790ef0-89cf-42df-8db9-53f130846add X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "cebf4fe4-c6e6-49a4-975c-3991331eddc1", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/cebf4fe4-c6e6-49a4-975c-3991331eddc1", "rel": "self"}, {"href": "http://localhost/conductors/cebf4fe4-c6e6-49a4-975c-3991331eddc1", "rel": "bookmark"}], "alive": true}, {"hostname": "2d1f7798-ac98-4252-b0a6-7033eed4f68a", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/2d1f7798-ac98-4252-b0a6-7033eed4f68a", "rel": "self"}, {"href": "http://localhost/conductors/2d1f7798-ac98-4252-b0a6-7033eed4f68a", "rel": "bookmark"}], "alive": true}, {"hostname": "323130ea-cba7-458e-aec2-6e7ddaf764a1", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/323130ea-cba7-458e-aec2-6e7ddaf764a1", "rel": "self"}, {"href": "http://localhost/conductors/323130ea-cba7-458e-aec2-6e7ddaf764a1", "rel": "bookmark"}], "alive": true}], "next": "http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,conductor_group,alive&limit=3&marker=323130ea-cba7-458e-aec2-6e7ddaf764a1"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_custom_fields_invalid_fields [0.031251s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/55096646-bc52-427b-8154-85f35e665021?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-604f7618-1a9d-468f-9060-b2fd3f1b4bb9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_step [0.040662s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '7edd213b-5b10-45d7-b641-6c133b0b0277', 'steps': [{'interface': 'raid', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-64d1276f-bd49-42a1-9419-85ae06645983 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for template: 'step' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one [0.030757s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/03c8ef8a-34ac-49ca-981c-e3bf16d320a2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5b93283e-60fe-4b77-b0d5-0d49b667f647 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "03c8ef8a-34ac-49ca-981c-e3bf16d320a2", "created_at": "2025-11-11T18:57:50.716772+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/03c8ef8a-34ac-49ca-981c-e3bf16d320a2", "rel": "self"}, {"href": "http://localhost/deploy_templates/03c8ef8a-34ac-49ca-981c-e3bf16d320a2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_fails_on_disabled_bios_boot_mode [0.056117s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'capabilities': 'boot_mode:bios'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-989b615a-e3fa-4814-9d45-bf9f374f597d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"'bios' boot mode is not allowed for provisioning operation.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_custom_fields [0.030288s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/0bf27a5e-f69d-4b04-b7fc-901b88a80162?fields=name,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3e6cdc53-18cf-4af7-bc4d-134054f12d62 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/0bf27a5e-f69d-4b04-b7fc-901b88a80162", "rel": "self"}, {"href": "http://localhost/deploy_templates/0bf27a5e-f69d-4b04-b7fc-901b88a80162", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_custom_fields [0.068476s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?fields=hostname,alive WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e46d958b-17f1-499a-a465-c930951eee1a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "19ee76e3-b91b-46c5-941a-63843903f14f", "links": [{"href": "http://localhost/v1/conductors/19ee76e3-b91b-46c5-941a-63843903f14f", "rel": "self"}, {"href": "http://localhost/conductors/19ee76e3-b91b-46c5-941a-63843903f14f", "rel": "bookmark"}], "alive": true}, {"hostname": "76f25e5e-69ba-40b3-b37f-872d0bacd256", "links": [{"href": "http://localhost/v1/conductors/76f25e5e-69ba-40b3-b37f-872d0bacd256", "rel": "self"}, {"href": "http://localhost/conductors/76f25e5e-69ba-40b3-b37f-872d0bacd256", "rel": "bookmark"}], "alive": true}, {"hostname": "be48fdcd-4aa8-4061-990d-ee659c010ac2", "links": [{"href": "http://localhost/v1/conductors/be48fdcd-4aa8-4061-990d-ee659c010ac2", "rel": "self"}, {"href": "http://localhost/conductors/be48fdcd-4aa8-4061-990d-ee659c010ac2", "rel": "bookmark"}], "alive": true}], "next": "http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,alive&limit=3&marker=be48fdcd-4aa8-4061-990d-ee659c010ac2"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_standard_trait_name [0.042153s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'HW_CPU_X86_VMX', 'uuid': '11a15a1a-1ceb-4214-bcbe-ec453f584c9a', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/11a15a1a-1ceb-4214-bcbe-ec453f584c9a Openstack-Request-Id: req-4d06011a-e5dc-4e06-ad79-8558b4cce3af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "11a15a1a-1ceb-4214-bcbe-ec453f584c9a", "created_at": "2025-11-11T18:57:50.753556+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/11a15a1a-1ceb-4214-bcbe-ec453f584c9a", "rel": "self"}, {"href": "http://localhost/deploy_templates/11a15a1a-1ceb-4214-bcbe-ec453f584c9a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_invalid_api_version [0.027418s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/b62c4b76-4fa6-49eb-a3d3-ca620a7e956e WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow deploy templates\"}"} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_default_limit [0.039744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9fe6a33b-1858-4a2c-bcaf-dac4239e863c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "06dc30b8-c34b-4055-b0fd-04db5623f879", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/06dc30b8-c34b-4055-b0fd-04db5623f879", "rel": "self"}, {"href": "http://localhost/conductors/06dc30b8-c34b-4055-b0fd-04db5623f879", "rel": "bookmark"}], "alive": true}, {"hostname": "5cfb714a-2d8a-4b52-8ed1-1fdc3588c295", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/5cfb714a-2d8a-4b52-8ed1-1fdc3588c295", "rel": "self"}, {"href": "http://localhost/conductors/5cfb714a-2d8a-4b52-8ed1-1fdc3588c295", "rel": "bookmark"}], "alive": true}, {"hostname": "a021da8b-261e-4d88-b905-a2801b3a2d51", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/a021da8b-261e-4d88-b905-a2801b3a2d51", "rel": "self"}, {"href": "http://localhost/conductors/a021da8b-261e-4d88-b905-a2801b3a2d51", "rel": "bookmark"}], "alive": true}], "next": "http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,conductor_group,alive&limit=3&marker=a021da8b-261e-4d88-b905-a2801b3a2d51"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_fails_on_disabled_uefi_boot_mode [0.071496s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'capabilities': 'boot_mode:uefi'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-413a1f11-14cf-4bef-8aff-4c4ff3c7d75f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"'uefi' boot mode is not allowed for provisioning operation.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_step_string_priority [0.040818s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'd85cb87d-5656-44cc-a948-a6e4bd59c7eb', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': '42'}], 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/d85cb87d-5656-44cc-a948-a6e4bd59c7eb Openstack-Request-Id: req-02ef587e-29ee-4bf3-b066-b2bc17220b7c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d85cb87d-5656-44cc-a948-a6e4bd59c7eb", "created_at": "2025-11-11T18:57:50.799145+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/d85cb87d-5656-44cc-a948-a6e4bd59c7eb", "rel": "self"}, {"href": "http://localhost/deploy_templates/d85cb87d-5656-44cc-a948-a6e4bd59c7eb", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": "42"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_json [0.035061s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/c5996ddb-8fa1-42a1-935c-1ef5a6b62777.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-55b1b705-235d-4828-8da8-94d079c1ad7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "c5996ddb-8fa1-42a1-935c-1ef5a6b62777", "created_at": "2025-11-11T18:57:50.810681+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/c5996ddb-8fa1-42a1-935c-1ef5a6b62777", "rel": "self"}, {"href": "http://localhost/deploy_templates/c5996ddb-8fa1-42a1-935c-1ef5a6b62777", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_empty [0.026103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d2632972-ce49-4928-86f3-292ecfa8e49d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": []} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_json_not_found [0.028439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/5e938498-fada-4648-9bbc-23040290f8ea.json WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c43ed54e-8919-4eb2-a7ec-e4db318349c2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template 5e938498-fada-4648-9bbc-23040290f8ea.json could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_steps_invalid_duplicate [0.037873s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'cb3ca36f-75ed-4d08-95a6-2eff07c9ba5b', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': '0'}, 'priority': 0}, {'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': '1'}, 'priority': 1}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cddf9aa5-ab88-4c42-9828-d7f0071cbc56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template invalid: Duplicate deploy steps. A template cannot have multiple deploy steps with the same interface and step. Duplicates: interface: raid, step: create_configuration.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_fails_on_invalid_boot_mode [0.046056s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_collection_custom_fields [0.028407s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?fields=hostname,alive WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3f6362be-d15f-4cdd-a4ab-7ace9f04f2cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "rocky.rocks", "links": [{"href": "http://localhost/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://localhost/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true}, {"hostname": "stein.rocks", "links": [{"href": "http://localhost/v1/conductors/stein.rocks", "rel": "self"}, {"href": "http://localhost/conductors/stein.rocks", "rel": "bookmark"}], "alive": true}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_suffix [0.028457s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/0ea9075d-a680-4443-bac4-e1f4f8abcad5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ef5f666a-4ed7-41a1-b85b-38064efeab75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0ea9075d-a680-4443-bac4-e1f4f8abcad5", "created_at": "2025-11-11T18:57:50.869868+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/0ea9075d-a680-4443-bac4-e1f4f8abcad5", "rel": "self"}, {"href": "http://localhost/deploy_templates/0ea9075d-a680-4443-bac4-e1f4f8abcad5", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_custom_fields_invalid_fields [0.027997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks?fields=hostname,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-89670758-412b-4706-a324-5b0f916ca03a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cached [0.041786s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/manual-management/properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f51658b-34a4-4a8b-b208-653666e79d49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"prop1": "Property 1. Required."} GET /v1/drivers/manual-management/properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5a82a106-0330-4910-80d6-ff26630ef33f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"prop1": "Property 1. Required."} GET /v1/drivers/manual-management/properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6676a832-539b-4a98-91ec-800395e9042c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"prop1": "Property 1. Required."} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_links [0.039510s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/9227051c-4909-457b-8b58-e18ea884976e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4dbf4ff2-dfc5-4e31-aaf5-abbe4c6bb9a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9227051c-4909-457b-8b58-e18ea884976e", "created_at": "2025-11-11T18:57:50.900448+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9227051c-4909-457b-8b58-e18ea884976e", "rel": "self"}, {"href": "http://localhost/deploy_templates/9227051c-4909-457b-8b58-e18ea884976e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /v1/deploy_templates/9227051c-4909-457b-8b58-e18ea884976e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-31a8a8f0-ff2f-44bd-9056-70a2eaae7c2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9227051c-4909-457b-8b58-e18ea884976e", "created_at": "2025-11-11T18:57:50.900448+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9227051c-4909-457b-8b58-e18ea884976e", "rel": "self"}, {"href": "http://localhost/deploy_templates/9227051c-4909-457b-8b58-e18ea884976e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /deploy_templates/9227051c-4909-457b-8b58-e18ea884976e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-25462e51-ddee-4eb0-9082-27c68a7be884 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9227051c-4909-457b-8b58-e18ea884976e", "created_at": "2025-11-11T18:57:50.900448+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9227051c-4909-457b-8b58-e18ea884976e", "rel": "self"}, {"href": "http://localhost/deploy_templates/9227051c-4909-457b-8b58-e18ea884976e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one [0.040558s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-519eaba5-069f-4005-9a6b-362c5ec50be5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:50.914040+00:00", "updated_at": "2025-11-11T18:57:50.913817+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://localhost/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cannot_load [0.032862s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/driver/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dae2c36c-ed0f-43e9-b101-f524471a9723 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): driver.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_bios_interface [0.091985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'bios_interface': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c2d55afd-2b1c-470f-9cbb-f719fa10d168 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following interface in the 'ironic.hardware.interfaces.bios' entrypoint: foo. Valid interfaces are ['fake', 'no-bios'].\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_many [0.037733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-046dfdd0-435e-4002-a0b7-76998048f7da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "31ed4673-e72a-4390-aba6-923f5b34a9d4", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/31ed4673-e72a-4390-aba6-923f5b34a9d4", "rel": "self"}, {"href": "http://localhost/deploy_templates/31ed4673-e72a-4390-aba6-923f5b34a9d4", "rel": "bookmark"}]}, {"uuid": "55a23577-e81f-4184-a9e4-8b1ceb399adf", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/55a23577-e81f-4184-a9e4-8b1ceb399adf", "rel": "self"}, {"href": "http://localhost/deploy_templates/55a23577-e81f-4184-a9e4-8b1ceb399adf", "rel": "bookmark"}]}, {"uuid": "d5a3771a-9223-425b-b52e-5b4403b48813", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/d5a3771a-9223-425b-b52e-5b4403b48813", "rel": "self"}, {"href": "http://localhost/deploy_templates/d5a3771a-9223-425b-b52e-5b4403b48813", "rel": "bookmark"}]}, {"uuid": "92518b97-918b-4a25-9095-9f1b4c253791", "name": "CUSTOM_DT3", "links": [{"href": "http://localhost/v1/deploy_templates/92518b97-918b-4a25-9095-9f1b4c253791", "rel": "self"}, {"href": "http://localhost/deploy_templates/92518b97-918b-4a25-9095-9f1b4c253791", "rel": "bookmark"}]}, {"uuid": "cef30e7a-3787-4acc-a68a-79428fda69a1", "name": "CUSTOM_DT4", "links": [{"href": "http://localhost/v1/deploy_templates/cef30e7a-3787-4acc-a68a-79428fda69a1", "rel": "self"}, {"href": "http://localhost/deploy_templates/cef30e7a-3787-4acc-a68a-79428fda69a1", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_fake [0.032110s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/test/properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bb694bde-306a-4770-a94c-c85f36a1fd93 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"prop1": "Property 1. Required."} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_one [0.029505s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-13ff7ae5-8c9d-46e3-b0f9-a321e7a7695b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "b728600b-4a8b-4597-bbdc-a4484adfff5e", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/b728600b-4a8b-4597-bbdc-a4484adfff5e", "rel": "self"}, {"href": "http://localhost/deploy_templates/b728600b-4a8b-4597-bbdc-a4484adfff5e", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_conductor_offline_old_heartbeat [0.061133s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e1ec8c3c-8264-4b31-bb41-438b47632a79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2000-01-01T00:00:00+00:00", "updated_at": "2000-01-01T00:00:00+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://localhost/conductors/rocky.rocks", "rel": "bookmark"}], "alive": false} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_hw_type [0.031934s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/manual-management/properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7ba848d8-7ad5-4150-b6e5-ab7994ae5617 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"prop1": "Property 1. Required."} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_chassis [0.057602s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 0} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-03656c6b-ec53-417a-83c6-f93dc61a15cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: 0 is not of type 'string', 'null'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sensitive_data_masked [0.029290s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/6c440328-59e6-4a47-9f88-0918963b5af1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f12d55c9-28b7-4569-b60b-6f0f083c9ed3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6c440328-59e6-4a47-9f88-0918963b5af1", "created_at": "2025-11-11T18:57:51.007831+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/6c440328-59e6-4a47-9f88-0918963b5af1", "rel": "self"}, {"href": "http://localhost/deploy_templates/6c440328-59e6-4a47-9f88-0918963b5af1", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": [], "password": "******"}, "priority": 10}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_invalid_driver_name [0.030382s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/bad_driver/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d295e498-2419-4858-bc0d-bf0557c578a5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): bad_driver.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key [0.032174s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab3fd070-df84-4d59-8b0d-be0eb2593c4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "78c05ef6-d70e-402f-b2e7-bab73cacec4e", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/78c05ef6-d70e-402f-b2e7-bab73cacec4e", "rel": "self"}, {"href": "http://localhost/deploy_templates/78c05ef6-d70e-402f-b2e7-bab73cacec4e", "rel": "bookmark"}]}, {"uuid": "8a46f31f-9176-4e37-ae72-9657f17b6938", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/8a46f31f-9176-4e37-ae72-9657f17b6938", "rel": "self"}, {"href": "http://localhost/deploy_templates/8a46f31f-9176-4e37-ae72-9657f17b6938", "rel": "bookmark"}]}, {"uuid": "ed9e1a36-5639-4650-a35d-aa121d35df71", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/ed9e1a36-5639-4650-a35d-aa121d35df71", "rel": "self"}, {"href": "http://localhost/deploy_templates/ed9e1a36-5639-4650-a35d-aa121d35df71", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_conductor_offline_unregistered [0.070979s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-673d61ec-2e9d-4570-84cb-caeab409814f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:51.033198+00:00", "updated_at": "2025-11-11T18:57:51.045907+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://localhost/conductors/rocky.rocks", "rel": "bookmark"}], "alive": false} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_driver [0.068726s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-20e83565-30f8-48f4-aca6-019e7293ba85 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fake Error\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_allowed [0.032477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?sort_key=name&detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4176a715-0d99-421f-9d7f-400498e90232 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "a84e326f-75c2-45f3-89d5-beaa8e0f3a68", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/a84e326f-75c2-45f3-89d5-beaa8e0f3a68", "rel": "self"}, {"href": "http://localhost/deploy_templates/a84e326f-75c2-45f3-89d5-beaa8e0f3a68", "rel": "bookmark"}]}, {"uuid": "808198a6-d20e-4679-b97b-ddaf730ddb56", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/808198a6-d20e-4679-b97b-ddaf730ddb56", "rel": "self"}, {"href": "http://localhost/deploy_templates/808198a6-d20e-4679-b97b-ddaf730ddb56", "rel": "bookmark"}]}, {"uuid": "1f3caa33-f139-4de4-a940-2b28fc9f1d86", "name": "CUSTOM_DT3", "links": [{"href": "http://localhost/v1/deploy_templates/1f3caa33-f139-4de4-a940-2b28fc9f1d86", "rel": "self"}, {"href": "http://localhost/deploy_templates/1f3caa33-f139-4de4-a940-2b28fc9f1d86", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_properties_hidden_in_lower_version [0.055926s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f162f4f-06b1-4926-a80b-c6bbf8108f79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.8 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_invalid [0.029695s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-63bbf2d9-ecab-444d-8896-a7c3dff05c5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/deploy_templates?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-246f6923-6fb8-4c95-8383-340288363498 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/deploy_templates?sort_key=steps WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8eac6927-cab7-4c60-97c6-bd4099881c9a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value steps is an invalid field for sorting\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_custom_fields [0.063117s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks?fields=hostname,alive WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-17e6377b-08ba-4c3d-90fe-266be339a257 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"hostname": "rocky.rocks", "links": [{"href": "http://localhost/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://localhost/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_network_interface [0.062058s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'network_interface': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-00938581-4c1e-40d1-a25b-fd5e3ce3cd4b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following interface in the 'ironic.hardware.interfaces.network' entrypoint: foo. Valid interfaces are ['flat', 'neutron', 'noop'].\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_type_hidden_in_lower_version [0.040793s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a6bb8a48-8f5f-484e-b8b6-27cb99adea06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.14 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type/properties", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_async [0.032585s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-hardware-type/vendor_passthru/do_test WITH {'test_key': 'test_value'} GOT Response: 202 Accepted Openstack-Request-Id: req-f57a6295-3b66-4104-b0ef-adfb0967d3d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_multi [0.071295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/8245c457-fb30-450e-b7df-b5c347ed3661 WITH [{'path': '/steps/0', 'value': {'interface': 'raid', 'step': 'create_configuration0', 'args': {}, 'priority': 10}, 'op': 'add'}, {'path': '/steps/1', 'value': {'interface': 'raid', 'step': 'create_configuration1', 'args': {}, 'priority': 10}, 'op': 'add'}, {'path': '/steps/2', 'value': {'interface': 'raid', 'step': 'create_configuration2', 'args': {}, 'priority': 10}, 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bf1740cc-d9f8-457f-b813-38dc9f666c39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8245c457-fb30-450e-b7df-b5c347ed3661", "created_at": "2025-11-11T18:57:51.133122+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/8245c457-fb30-450e-b7df-b5c347ed3661", "rel": "self"}, {"href": "http://localhost/deploy_templates/8245c457-fb30-450e-b7df-b5c347ed3661", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "priority": 10}, {"interface": "raid", "step": "create_configuration1", "args": {}, "priority": 10}, {"interface": "raid", "step": "create_configuration2", "args": {}, "priority": 10}, {"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_with_invalid_api [0.063098s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d303186a-b287-46ef-a142-34ff62bd2719 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_storage_interface [0.063281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'storage_interface': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cfeebdd2-547d-4503-ac0d-264d8d7a673f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following interface in the 'ironic.hardware.interfaces.storage' entrypoint: foo. Valid interfaces are ['fake', 'noop'].\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_delete [0.038694s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/drivers/fake-hardware-type/vendor_passthru/do_test GOT Response: 202 Accepted Openstack-Request-Id: req-10e65840-0a6a-4148-aab9-758247e42e01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_with_port_and_v6 [0.042592s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/[::1]:8090 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c5fa696d-c9b9-400f-8800-9ee9707510aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:51.222352+00:00", "updated_at": "2025-11-11T18:57:51.222093+00:00", "hostname": "[::1]:8090", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/[::1]:8090", "rel": "self"}, {"href": "http://localhost/conductors/[::1]:8090", "rel": "bookmark"}], "alive": true} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_driver_not_found [0.031376s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-hardware-type/vendor_passthru/do_test WITH {'test_key': 'test_value'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4e76636c-da98-45cf-a823-1d9954a6b90a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_root_non_existent [0.075731s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/a32e409d-09aa-481b-8407-f3373287e1d1 WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cce7156e-f43f-4266-b6df-1833b724b91a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links [0.034807s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cbb8d3cc-af1a-47c7-b418-43ff9d870a1e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:51.253643+00:00", "updated_at": "2025-11-11T18:57:51.253427+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://localhost/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true} GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c2ae4374-52fc-406c-a932-cfcb6fefba0e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:51.253643+00:00", "updated_at": "2025-11-11T18:57:51.253427+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://localhost/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true} GET /conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f97e452-8fed-46ac-95f4-49ceeeedcce3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:51.253643+00:00", "updated_at": "2025-11-11T18:57:51.253427+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://localhost/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_get [0.041122s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type/vendor_passthru/do_test WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1aed0ff9-549f-4f8b-92f1-6f4d09269fdc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 "foo" {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links_public_url [0.033367s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fcdac3ee-19bb-421d-a914-967e405d239e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:51.287422+00:00", "updated_at": "2025-11-11T18:57:51.287199+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://foo/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://foo/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true} GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3f05f41e-4b1f-4a81-ad63-3a0f9b45623a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:51.287422+00:00", "updated_at": "2025-11-11T18:57:51.287199+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://foo/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://foo/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true} GET /conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-47a6c7a2-26cc-471a-bb81-abe6647c8663 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:57:51.287422+00:00", "updated_at": "2025-11-11T18:57:51.287199+00:00", "hostname": "rocky.rocks", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://foo/v1/conductors/rocky.rocks", "rel": "self"}, {"href": "http://foo/conductors/rocky.rocks", "rel": "bookmark"}], "alive": true} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_method_not_found [0.030057s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-hardware-type/vendor_passthru WITH {'test_key': 'test_value'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-08539101-e9f2-4d5e-83bf-810ce3c5bf6d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: method\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list [0.027748s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2eeffeaf-cbc2-4cc4-90c4-e153c832b46c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "why care", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/why care", "rel": "self"}, {"href": "http://localhost/conductors/why care", "rel": "bookmark"}], "alive": true}, {"hostname": "why not", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/why not", "rel": "self"}, {"href": "http://localhost/conductors/why not", "rel": "bookmark"}], "alive": true}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_too_high_index_step_fail [0.077421s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/4d101ca1-db25-4a56-ac1b-101255ac30f3 WITH [{'path': '/steps/2', 'op': 'add', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-626c0d03-c4e4-4ffa-8ea7-0c248f16b155 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/2', 'op': 'add', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}'. Reason: can't insert outside of list\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee [0.158072s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'lessee': 'project', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-85a15dbd-f478-4afc-a6d1-8693fc56ee70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.307347+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": "project", "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-efe11add-c7eb-4af3-b443-6214ee8bd1c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.307347+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "c onductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": "project", "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_foo [0.030524s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/d4633e0c-c570-469e-9a61-ff5c337c48e3 WITH [{'path': '/foo', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a9bc238d-e5db-4176-b492-4ad274fe0a52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_detail [0.044947s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?detail=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03dc225f-f08a-493d-97f6-1cf59441c471 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"created_at": "2025-11-11T18:57:51.349169+00:00", "updated_at": "2025-11-11T18:57:51.348972+00:00", "hostname": "why care", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/why care", "rel": "self"}, {"href": "http://localhost/conductors/why care", "rel": "bookmark"}], "alive": true}, {"created_at": "2025-11-11T18:57:51.350218+00:00", "updated_at": "2025-11-11T18:57:51.350076+00:00", "hostname": "why not", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/why not", "rel": "self"}, {"href": "http://localhost/conductors/why not", "rel": "bookmark"}], "alive": true}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_methods [0.043380s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type/vendor_passthru/methods WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-784d21a4-2991-449e-8880-aa2e772641de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"foo": "bar"} GET /v1/drivers/fake-hardware-type/vendor_passthru/methods WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d277340c-0ac8-4886-ab99-d0409a4f4400 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"foo": "bar"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_put [0.033765s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-hardware-type/vendor_passthru/do_test WITH {'test_key': 'test_value'} GOT Response: 202 Accepted Openstack-Request-Id: req-23c99cfb-d42e-414a-9ad2-fa53ba64ffc6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee_old_api_version [0.056685s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'lessee': 'project', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-977d4c5d-9b85-4086-a834-7692f2dcb363 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.64 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_multi [0.051439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/0f0f8f66-18ca-43a6-a07b-50a39c36744a WITH [{'path': '/steps/1', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6e79594d-8f9d-4fce-b132-0f750c3019e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0f0f8f66-18ca-43a6-a07b-50a39c36744a", "created_at": "2025-11-11T18:57:51.392387+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/0f0f8f66-18ca-43a6-a07b-50a39c36744a", "rel": "self"}, {"href": "http://localhost/deploy_templates/0f0f8f66-18ca-43a6-a07b-50a39c36744a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "priority": 10}, {"interface": "raid", "step": "create_configuration2", "args": {}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_invalid_api [0.055060s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3f7dfb6a-371f-4215-a620-999c7e86341d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_sync [0.038379s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-hardware-type/vendor_passthru/do_test WITH {'test_key': 'test_value'} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4ab0ad80-dab2-4e39-999a-4fd29fc3135f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"return_key": "return_value"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_name [0.044905s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/de913678-7588-44ae-ae3e-c4189bae425e WITH [{'path': '/name', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cea8339d-9282-47c8-8c9f-62a3b095bcf2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'name' is a required property\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_invalid [0.055954s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': '', 'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-28b34597-258c-4afe-aa9d-7fb06b58e8e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create node with invalid name ''\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_property_fail [0.032811s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/c9623e41-90b3-4773-919d-98f2dc8119e0 WITH [{'path': '/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b606c89e-1d2e-4fc9-b784-20e037f14add X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /non-existent. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key [0.071493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?sort_key=hostname WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1f335c9d-c0a2-4f35-bd1e-7aaed9edcabf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "113c5624-b3e8-4ac7-b3bc-acfa2bf01836", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/113c5624-b3e8-4ac7-b3bc-acfa2bf01836", "rel": "self"}, {"href": "http://localhost/conductors/113c5624-b3e8-4ac7-b3bc-acfa2bf01836", "rel": "bookmark"}], "alive": true}, {"hostname": "56a3fe59-d4fe-446d-b736-b94f1c99a38e", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/56a3fe59-d4fe-446d-b736-b94f1c99a38e", "rel": "self"}, {"href": "http://localhost/conductors/56a3fe59-d4fe-446d-b736-b94f1c99a38e", "rel": "bookmark"}], "alive": true}, {"hostname": "7c5e8513-d843-479d-995d-f0097aa844a4", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/7c5e8513-d843-479d-995d-f0097aa844a4", "rel": "self"}, {"href": "http://localhost/conductors/7c5e8513-d843-479d-995d-f0097aa844a4", "rel": "bookmark"}], "alive": true}, {"hostname": "993ba587-4b73-4f4b-854d-3351eccea743", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/993ba587-4b73-4f4b-854d-3351eccea743", "rel": "self"}, {"href": "http://localhost/conductors/993ba587-4b73-4f4b-854d-3351eccea743", "rel": "bookmark"}], "alive": true}, {"hostname": "bfdf1292-c0a7-41e5-b908-550389050321", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/bfdf1292-c0a7-41e5-b908-550389050321", "rel": "self"}, {"href": "http://localhost/conductors/bfdf1292-c0a7-41e5-b908-550389050321", "rel": "bookmark"}], "alive": true}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers [0.053773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8f2365a9-4e8b-424a-8150-56a5f6e0a8b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"drivers": [{"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]}, {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]}]} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e37869da-6519-4ef3-9bfd-241f062f9775 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c75e6cc4-1554-4d67-aaf5-b7197eb1d985 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /v1/drivers/fake-hardware-type-2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9cf5e83c-979c-405a-988a-aeee15ca3aa3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]} GET /drivers/fake-hardware-type-2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d0134d27-1227-44aa-bdd8-0944f8fb490f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_name_empty_not_acceptable [0.055368s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': '', 'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-de8e38e7-1c99-4e55-a822-b9a494397291 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_fail [0.034600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/ce44aebb-04e3-490f-900d-bfe0e27f2d6e WITH [{'path': '/steps/1', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-840c2889-0949-42e5-b1f4-e6dd43c796df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/1', 'op': 'remove'}'. Reason: can't remove non-existent object '1'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields [0.038107s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?fields=name,hosts WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8e71082d-6bdc-406b-aeaa-ae9385ad0ca1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.77 {"drivers": [{"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]}, {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key_invalid [0.072232s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?sort_key=alive WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1ff865d7-f0ba-400f-87f0-4020d6cd36c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value alive is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/conductors?sort_key=drivers WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bbf4d05f-1332-4b9e-b45d-d75634922c15 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value drivers is an invalid field for sorting\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_false [0.034441s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?fields=name,hosts&detail=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fd21e708-c6b1-4bd5-9fcf-80e32af781d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.77 {"drivers": [{"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]}, {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface [0.088280s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'network_interface': 'flat', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-3866c826-1c6e-4ec3-af24-a4bbff337d51 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.587492+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be48b1ec-c2ca-4622-9fb2-748f3fd456de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.587492+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_true [0.033073s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=true&fields=name,hosts WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-16013c75-c8ba-43b1-80b1-1be88997863d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.77 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_property_fail [0.076448s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/957dd29e-e564-4d05-9f7f-fc6eda282363 WITH [{'path': '/steps/0/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9f0963cd-25e6-4317-99f7-985d1e4a6b22 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/0/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios [0.062819s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-918be119-3399-48d7-a0fc-dea33e8332af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"bios": [{"created_at": "2025-11-11T18:57:51.621251+00:00", "updated_at": null, "name": "virtualization", "value": "on", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_false [0.038721s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a2538351-1647-47f3-9772-be4bd0f7356c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"bios": [{"created_at": "2025-11-11T18:57:51.664802+00:00", "updated_at": null, "name": "virtualization", "value": "on", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_network_interface_old_api_version [0.077732s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'network_interface': 'flat', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-843297cc-749e-4c80-80c5-1bbc4ac0a06f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_old_version [0.037910s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6c58e508-4871-4a4b-9dee-8a5f40b9990f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.73 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_only_step_fail [0.087793s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/fcec8e8b-35d4-4a33-ab19-fc314b3c606d WITH [{'path': '/steps/0', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-96e0545c-37ed-4f69-81b1-0121aaae4825 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: [] is too short\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_fails_with_bad_version [0.031130s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_chassis_uuid [0.065077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-c4c6c2f1-6b38-4ec9-b9b5-a135015ba694 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.752000+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_with_detail [0.036830s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6e2fb73d-e1d8-4fb8-b5a4-0975e24185bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"bios": [{"created_at": "2025-11-11T18:57:51.772383+00:00", "updated_at": null, "name": "virtualization", "value": "on", "attribute_type": "Enumeration", "allowable_values": ["on", "off"], "lower_bound": null, "max_length": null, "min_length": null, "read_only": false, "reset_required": true, "unique": false, "upper_bound": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_steps [0.075870s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/77a30606-f5bc-4a72-ad08-f122211295ff WITH [{'path': '/steps', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c4189c7a-f9f1-48d8-92e8-f381f846d45f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'steps' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_detail_and_fields [0.035494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?detail=True?fields=name,read_only WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2afc5ec0-acf5-4907-bcf7-591e2748dca0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid detail: Unrecognized value 'True?fields=name,read_only', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_uuid [0.031114s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/ff80a530-24c1-43b1-8c3b-04d4467422b5 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b6b3fd77-d949-4b34-ab60-25f4abb5614a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: extra, name, steps, description\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_default_resource_class [0.074804s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-da313ac2-88f0-4dcf-8e20-4331a45afd18 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.818775+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-091b8412-ae24-4d5b-a2a9-94a234f01914 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.818775+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": "flat", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields [0.037399s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?fields=name,read_only WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1898b200-3227-46d7-9b94-78ed806a97ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"bios": [{"created_at": "2025-11-11T18:57:51.846481+00:00", "updated_at": null, "name": "virtualization", "read_only": false, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_duplicate_step [0.052418s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/4ee97986-6019-4cc8-a1a3-5d6b3386db9d WITH [{'path': '/steps', 'op': 'replace', 'value': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': '0'}, 'priority': 0}, {'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': '1'}, 'priority': 1}]}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-169d7b46-8705-4441-ae2c-d53b8d21e240 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template invalid: Duplicate deploy steps. A template cannot have multiple deploy steps with the same interface and step. Duplicates: interface: raid, step: create_configuration.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_mandatory_field_driver [0.054977s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-45db8215-df23-42a5-a390-6d187b788313 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: 'driver' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields_old_version [0.043215s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios?fields=name,read_only WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c1ef846d-6f3c-4d9f-9d48-4c735d32053e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.73 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?fields=['name', 'read_only'] received.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_invalid_custom_fields [0.280479s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?fields=name,invalid WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f4d32f32-598f-45b2-b4bc-96d88cb10235 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.77 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"invalid\\\" are not valid\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_empty_step_list_fail [0.042245s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/6f4f23a0-35fc-47f1-8df4-f82ed3e167af WITH [{'path': '/steps', 'op': 'replace', 'value': []}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-54ab74fb-9763-4145-ac84-0003cd2b97db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: [] is too short\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version [0.027725s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=True WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-b9c95b66-9568-4a06-bb3e-8eb42f230055 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.29 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.30\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version_false [0.026969s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=False WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-511e557e-8be6-4025-a201-11363f09066c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.29 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.30\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner [0.081744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'owner': 'cowsay', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-b8a2dbdb-5115-472e-8866-739e95c8d9af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.953831+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": "cowsay", "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0634fe08-f8e3-456c-9059-b535ee77c940 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:51.953831+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "cond uctor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": "cowsay", "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios [0.084775s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-641ff664-40ae-4b9b-9f61-45a7d86c9dde X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"virtualization": {"created_at": "2025-11-11T18:57:51.960254+00:00", "updated_at": null, "name": "virtualization", "value": "on", "attribute_type": "Enumeration", "allowable_values": ["on", "off"], "lower_bound": null, "max_length": null, "min_length": null, "read_only": false, "reset_required": true, "unique": false, "upper_bound": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "bookmark"}]}} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_not_found [0.026271s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/nope WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3c302159-0dd9-4b5b-a903-76984b073e79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): nope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_none [0.097713s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/a8b918dd-fda2-4b89-9d77-9754a35ebd85 WITH [{'path': '/name', 'op': 'replace', 'value': None}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d3d68028-ba71-40a6-a69c-79fe8e70f44f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: None is not of type 'string'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_old_api_version [0.055811s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'owner': 'bob', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-662d1efb-ac79-47fb-b51b-674273f94ddf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_base_interfaces [0.043866s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b3a28da9-bebd-4b8b-92b9-eec5569271df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type/properties", "rel": "bookmark"}], "type": "dynamic", "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_deploy_interface": "direct", "enabled_deploy_interfaces": ["ansible", "direct"], "default_power_interface": null, "enabled_power_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_boot_interface": null, "enabled_boot_interfaces": []} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-254b0c3b-1f1f-45dc-b0c5-4a1fbf4d9b63 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-593da702-74dc-48c8-9ed4-d3b739ef2177 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_if_not_found [0.078903s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/fake_setting WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9b075339-80d7-4048-8c61-dbea2c3c6196 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 doesn't have a BIOS setting 'fake_setting'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_latest_interfaces [0.043357s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0f0c7de7-e96c-4a6f-bd39-7977123ce868 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type/properties", "rel": "bookmark"}], "type": "dynamic", "default_bios_interface": null, "enabled_bios_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_storage_interface": null, "enabled_storage_interfaces": [], "default_deploy_interface": "direct", "enabled_deploy_interfaces": ["ansible", "direct"], "default_power_interface": null, "enabled_power_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_rescue_interface": null, "enabled_rescue_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_firmware_interface": null, "enabled_firmware_interfaces": [], "default_boot_interface": null, "enabled_boot_interfaces": []} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f7167766-56ca-41c7-8bb6-0ec5a721c8b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f06142cb-152c-4aef-a865-8ee457b07113 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_not_a_trait [0.083781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/6b58552a-949e-4e6b-9603-fb5647bcc7f2 WITH [{'path': '/name', 'op': 'replace', 'value': 'not-a-trait'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-aea921f4-a27d-4831-9919-c11b6e6eb034 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'not-a-trait' is not valid under any of the given schemas. Possible root cause: 'not-a-trait' does not match '^CUSTOM_[A-Z0-9_]+$'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_recorded_project_scope [0.090030s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-f28f6a0e-d334-4d35-aea3-fb373ebbf74f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:52.091542+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": "ravensay", "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-358cbfc4-1a59-4714-b0f1-4c5ec3539617 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:52.091542+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": "ravensay", "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_with_bad_version [0.052265s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_no_active_conductor [0.044651s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-89b0b042-a866-45ac-83de-2b7ae6d03a3c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"drivers": []} {0} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_no_registry [0.039393s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-89bdda9d-7391-4f2b-ba73-1cc84d6e0f9b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.73 {"virtualization": {"created_at": "2025-11-11T18:57:52.146995+00:00", "updated_at": null, "name": "virtualization", "value": "on", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/virtualization", "rel": "bookmark"}]}} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_value [0.052089s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?type=working WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-141002a5-c6e8-4e45-98fd-e595b1116403 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"\\\"type\\\" filter must be one of \\\"classic\\\" or \\\"dynamic\\\", if specified.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_get_child_node [0.039407s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/children WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c169a10b-142a-43e4-ada4-b689a60a91dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"children": ["d9014d76-0873-427a-85d8-4f89c92ae6c7"], "links": {"href": "http://localhost/v1/nodes?parent_node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "children"}} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_version [0.051881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?type=classic WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-dd19d722-fca2-43c0-bba3-5184a1a66b03 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.29 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.30\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_classic [0.029416s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?type=classic WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-51ac9807-a6e5-47b2-82f4-24d708a7c8f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"drivers": []} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_system_scope [0.140143s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'owner': 'catsay', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-08a89b57-c960-4830-957a-6385685b4f93 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:52.240372+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": "catsay", "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-05372bae-02bd-4235-bf60-4976dc503bfe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:52.240372+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "cond uctor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": "catsay", "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_dynamic [0.031069s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?type=dynamic WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-310f5039-4421-495f-8794-fb5563bb9c2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"drivers": [{"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type/properties", "rel": "bookmark"}], "type": "dynamic"}, {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2/properties", "rel": "bookmark"}], "type": "dynamic"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_protected_not_allowed [0.060218s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'protected': True} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6ebae588-aff9-4d3f-8223-932e0184caf1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: Additional properties are not allowed ('protected' was unexpected)\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic [0.042015s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9a1a2206-83fb-4d25-844e-89b51c43e872 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"drivers": [{"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type/properties", "rel": "bookmark"}], "type": "dynamic"}, {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2/properties", "rel": "bookmark"}], "type": "dynamic"}]} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-51fbeab7-1e4e-4406-8ddc-644f10e8bd81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-09050919-ef50-4e6a-8bd4-1a1b1a2034fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /v1/drivers/fake-hardware-type-2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b671ae33-d534-416d-a164-b9fc78ca6ce2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]} GET /drivers/fake-hardware-type-2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f40a5c08-84ab-410c-aa3e-b514d04b2ba8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed [0.044523s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a0ad9d84-d687-4197-a6e9-f7a1c7c0a0c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"drivers": [{"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type/properties", "rel": "bookmark"}], "type": "dynamic", "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_deploy_interface": "direct", "enabled_deploy_interfaces": ["ansible", "direct"], "default_power_interface": null, "enabled_power_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_boot_interface": null, "enabled_boot_interfaces": []}, {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2/properties", "rel": "bookmark"}], "type": "dynamic", "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_deploy_interface": null, "enabled_deploy_interfaces": [], "default_power_interface": null, "enabled_power_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_boot_interface": null, "enabled_boot_interfaces": []}]} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-feae7b26-6cbf-4805-bd29-003159d09402 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-25997f73-d710-4620-a7ad-e971dc5c830b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /v1/drivers/fake-hardware-type-2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5657fc53-3ba8-4a27-b792-e4b71330a8ee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]} GET /drivers/fake-hardware-type-2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5552933f-47db-4d69-96f6-b4fad585f4 4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_too_long [0.289995s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/40faa81b-ca13-45d6-b50f-b2134ddd4fb1 WITH [{'path': '/name', 'op': 'replace', 'value': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-33c18dbb-7add-40e5-87e5-499381633def X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' is too long\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed_storage_interface [0.046535s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f67404fe-1d58-4228-b62b-c6b9f6ef85ee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"drivers": [{"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type/properties", "rel": "bookmark"}], "type": "dynamic", "default_bios_interface": null, "enabled_bios_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_storage_interface": null, "enabled_storage_interfaces": [], "default_deploy_interface": "direct", "enabled_deploy_interfaces": ["ansible", "direct"], "default_power_interface": null, "enabled_power_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_rescue_interface": null, "enabled_rescue_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_firmware_interface": null, "enabled_firmware_interfaces": [], "default_boot_interface": null, "enabled_boot_interfaces": []}, {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}], "properties": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2/properties", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2/properties", "rel": "bookmark"}], "type": "dynamic", "default_bios_interface": null, "enabled_bios_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_storage_interface": null, "enabled_storage_interfaces": [], "default_deploy_interface": null, "enabled_deploy_interfaces": [], "default_power_interface": null, "enabled_power_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_rescue_interface": null, "enabled_rescue_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_firmware_interface": null, "enabled_firmware_interfaces": [], "default_boot_interface": null, "enabled_boot_interfaces": []}]} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-20334ffc-4c98-435c-96a5-ae4778fcf576 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-87a3fef6-57b4-49b4-a61c-f2afcd70ea73 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /v1/drivers/fake-hardware-type-2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req- 2598475e-bee1-4254-b03c-3910d33b5eb1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]} GET /drivers/fake-hardware-type-2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b2aed6ae-a349-4016-87a0-bc4743678944 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type-2", "hosts": ["fake-host1"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type-2", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type-2", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_node_children_by_single_node [0.247829s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/children WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0a984d0d-f5ee-470a-a68e-93dd4cc218e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"children": ["4d7100a0-4bf8-4bcf-943c-9500fc31144b", "47ff81cc-1e5a-4380-9cd5-9fc85cbfa3c7"], "links": {"href": "http://localhost/v1/nodes?parent_node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "children"}} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_step_interface_fail [0.079138s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/c2c1f8d2-5875-4029-9400-58ca7da7a150 WITH [{'path': '/steps/0', 'op': 'replace', 'value': {'interface': 'foo', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5b7d66c3-0c34-4217-8481-7f204f2f2a6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'foo' is not one of ['vendor', 'power', 'management', 'firmware', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes [0.035920s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-84f7e5b0-321e-46f2-8ada-ed3ff389f72e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "din", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_custom_fields_invalid_api_version [0.082690s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?fields=name,hosts WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-6a06e11e-939e-4cdd-a1c4-85c2e8ff5ea1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} GET /v1/drivers/fake-hardware-type?fields=name,hosts WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-2407d495-5f8b-4e7d-b049-b082a87e2fa4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_reserved_name [0.185354s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'maintenance', 'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c223dd3d-b80a-4d52-8580-2eea4dd01bfa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"maintenance\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'name': 'management', 'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-721e05b8-a927-403f-89b2-8d8376b7b4f6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"management\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'name': 'states', 'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-602827ea-9ffa-4771-9605-0afa30e5ef28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"states\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'name': 'vendor_passthru', 'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-861fc494-744a-4f39-b006-f012d5b75ea7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"vendor_passthru\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, state s, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'name': 'detail', 'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5dd8922a-0485-4992-b861-d3df118493c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"detail\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'name': 'validate', 'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5ab26ff0-5706-4969-b091-3a8b8490a096 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"validate\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes_cannot_see_children_if_not_owned [0.049021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?parent_node=1ccd4f88-07f7-4484-8f1b-b52a944a7827 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-062301fe-bdc3-469d-bc8d-69aadb772266 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"nodes": []} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_multi [0.095969s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/62098479-3658-4717-8f9b-9807f4642d26 WITH [{'path': '/steps/0', 'value': {'interface': 'raid', 'step': 'create_configuration0', 'args': {}, 'priority': 11}, 'op': 'replace'}, {'path': '/steps/1', 'value': {'interface': 'raid', 'step': 'create_configuration1', 'args': {}, 'priority': 11}, 'op': 'replace'}, {'path': '/steps/2', 'value': {'interface': 'raid', 'step': 'create_configuration2', 'args': {}, 'priority': 11}, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-87b60020-7600-4345-b954-755f27a80d79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "62098479-3658-4717-8f9b-9807f4642d26", "created_at": "2025-11-11T18:57:52.535806+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/62098479-3658-4717-8f9b-9807f4642d26", "rel": "self"}, {"href": "http://localhost/deploy_templates/62098479-3658-4717-8f9b-9807f4642d26", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "priority": 11}, {"interface": "raid", "step": "create_configuration1", "args": {}, "priority": 11}, {"interface": "raid", "step": "create_configuration2", "args": {}, "priority": 11}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes_ignores_parent_if_include_children_indicated [0.040057s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?include_children=True&parent_node=111 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-569ea133-42fd-4b82-a280-c1a3688414c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "din", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "346e2838-1919-446c-ad97-42692d5b09d0", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "not-yoda", "links": [{"href": "http://localhost/v1/nodes/346e2838-1919-446c-ad97-42692d5b09d0", "rel": "self"}, {"href": "http://localhost/nodes/346e2838-1919-446c-ad97-42692d5b09d0", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_custom_fields [0.072529s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type?fields=name,hosts WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5c5ad3cb-74ae-4f9c-8212-c8b3301982fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.77 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class [0.091840s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'resource_class': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-dc2a263a-237c-4aa2-b42b-d92f8af1b642 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:52.589631+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": "foo", "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f1088c2c-8b44-4bac-b26b-9b5c3933ea0a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:52.589631+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "c onductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "firmware_interface": "fake", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": "foo", "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes_lists_empty_for_specific_parent [0.039621s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?parent_node=15182644-9d15-48f6-ad0b-8b481a28f488 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9fa7aa9b-ffea-416a-883d-21e332c4511c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"nodes": []} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_name_already_exist [0.047985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/01cb85b0-a893-4093-ab45-029557c9a149 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-c7db8102-bbb2-4c3c-8980-905dc42cdf7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A deploy template with UUID 01cb85b0-a893-4093-ab45-029557c9a149 already exists.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_non_existent_step_fail [0.033882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/81db99b2-5080-402c-88c4-ab6bcdec1366 WITH [{'path': '/steps/1', 'op': 'replace', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3a969b68-4d6b-4e15-b422-3aa10d3c58d8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/1', 'op': 'replace', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}}'. Reason: list assignment index out of range\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_get_one_invalid_custom_fields [0.072962s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type?fields=name,invalid WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-90e3220b-bd69-43a4-b46b-203b862f9c39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.77 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"invalid\\\" are not valid\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes_with_children_only_parent [0.052291s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?include_children=True&fields=uuid,lessee,name,parent_node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-79ead44b-4866-49c4-9e99-fb0ddb63b853 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "lessee": "e1c09ab3-2bc0-42aa-81bc-5492b1c4616b", "name": "din", "parent_node": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class_old_api_version [0.069306s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'resource_class': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-def386fc-64c2-422e-a964-731f7a181a7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_step_invalid_interface [0.038684s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/3f6c2fca-d50e-4260-9f9c-e7c885103a14 WITH [{'path': '/steps/0/interface', 'op': 'replace', 'value': 'foo'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b07e5f34-3396-461d-a010-b9d7fb6d1b58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'foo' is not one of ['vendor', 'power', 'management', 'firmware', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes_with_include_children [0.038152s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?include_children=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-08748a78-b0dd-49ae-b07f-9b7db0eeb9c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "din", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "6600bc31-5e56-44e3-9064-85fe35689c42", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "not-yoda", "links": [{"href": "http://localhost/v1/nodes/6600bc31-5e56-44e3-9064-85fe35689c42", "rel": "self"}, {"href": "http://localhost/nodes/6600bc31-5e56-44e3-9064-85fe35689c42", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links [0.074924s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f241d920-371a-4f42-b8e2-bd331d3662eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b987937b-c075-4302-83e9-f515a54f4dbb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8c1a6f46-c8a6-46d7-90cf-dac1208e1130 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://localhost/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://localhost/drivers/fake-hardware-type", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id [0.059792s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/47f3ec04-ead7-4654-aa0e-60f2723d4569 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-df3fa2f6-e0e4-4074-a338-caaf31a8c392 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "47f3ec04-ead7-4654-aa0e-60f2723d4569", "created_at": "2025-11-11T18:57:52.716847+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/47f3ec04-ead7-4654-aa0e-60f2723d4569", "rel": "self"}, {"href": "http://localhost/deploy_templates/47f3ec04-ead7-4654-aa0e-60f2723d4569", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links_public_url [0.042333s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1fdc6a1e-70d1-4ada-8d2e-bcece3eed493 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://foo/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://foo/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8306423-51fb-4826-bf9a-ab6e88cc5e6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://foo/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://foo/drivers/fake-hardware-type", "rel": "bookmark"}]} GET /drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-912b0b95-e57c-4c60-8856-0988b9b0bc75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "fake-hardware-type", "hosts": ["fake-host1", "fake-host2"], "links": [{"href": "http://foo/v1/drivers/fake-hardware-type", "rel": "self"}, {"href": "http://foo/drivers/fake-hardware-type", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePost.test_create_node_with_named_parent_node_succeeds [0.078331s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': 'c76a911d-2c41-4535-95b4-7abdd37ef371', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'parent_node': 'din'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371 Openstack-Request-Id: req-eb5f07da-5c52-4d53-9934-4de79de69155 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"uuid": "c76a911d-2c41-4535-95b4-7abdd37ef371", "created_at": "2025-11-11T18:57:52.772074+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371", "rel": "self"}, {"href": "http://localhost/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371/ports", "rel": "self"}, {"href": "http://localhost/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371/states", "rel": "self"}, {"href": "http://localhost/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371/volume", "rel": "self"}, {"href": "http://localhost/nodes/c76a911d-2c41-4535-95b4-7abdd37ef371/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group [0.118246s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'conductor_group': 'foo', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-02da57a9-7385-4319-baa0-7c26891b2f7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:52.775043+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "conductor_group": "foo", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-398e2ea4-f4c6-4404-9469-b2a5978cfc10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:52.775043+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "conductor_group": "foo", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "*** ***", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties [0.034091s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type/raid/logical_disk_properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-46150d45-ee8c-4450-a96b-d9b0be4d1f48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {"foo": "description of foo"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id_invalid_api_version [0.065153s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/53f09d6a-5a7b-45a2-a6fd-fbb511d55465 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow deploy templates\"}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_cached [0.036417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type/raid/logical_disk_properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-38fd7b83-1b7d-4820-9842-ae965ea8ad33 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {"foo": "description of foo"} GET /v1/drivers/fake-hardware-type/raid/logical_disk_properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d78173f5-df56-4dad-aaf2-9aa9782a7a34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {"foo": "description of foo"} GET /v1/drivers/fake-hardware-type/raid/logical_disk_properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e2130a43-7f30-4f0f-96ba-68bb2df70681 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {"foo": "description of foo"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePost.test_create_node_with_parent_node [0.088747s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '38efb42f-e03f-4d1a-9993-6b92c477c046', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'parent_node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046 Openstack-Request-Id: req-7e9c10cf-bf2a-4d35-866b-82ba8fbbe987 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"uuid": "38efb42f-e03f-4d1a-9993-6b92c477c046", "created_at": "2025-11-11T18:57:52.853695+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/ports", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/states", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/volume", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/volume", "rel": "bookmark"}]} GET /v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fb1095e2-1ccc-4dc2-8ad4-dee50da328b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"uuid": "38efb42f-e03f-4d1a-9993-6b92c477c046", "created_at": "2025-11-11T18:57:52.853695+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_ step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "parent_node": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/ports", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/states", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/volume", "rel": "self"}, {"href": "http://localhost/nodes/38efb42f-e03f-4d1a-9993-6b92c477c046/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group_bad_version [0.078368s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'conductor_group': 'foo', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-93f31964-8a2e-4dec-8bc8-b5bd63eda4d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_iface_not_supported [0.042513s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type/raid/logical_disk_properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1aebd37d-1b9b-4768-bd18-7299baeb7ba0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver fake-hardware does not support raid (disabled or not implemented).\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_older_version [0.039799s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type/raid/logical_disk_properties WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-437440f9-c581-40ad-bef9-cdfc72f86644 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.4 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePost.test_create_node_with_parent_node_fail_wrong_version [0.072028s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '857bfe49-b1cf-4065-b4ae-4b2965960503', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'parent_node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-7f647e0f-c897-4e38-948d-74b692986c7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name [0.123313s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/CUSTOM_DT1 WITH [{'path': '/steps', 'value': [{'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'priority': 42}], 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c3acf612-5730-4d5f-9abd-2c74b941eeac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4a63fbcc-869c-45ed-81ee-16132fd3d779", "created_at": "2025-11-11T18:57:52.895847+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4a63fbcc-869c-45ed-81ee-16132fd3d779", "rel": "self"}, {"href": "http://localhost/deploy_templates/4a63fbcc-869c-45ed-81ee-16132fd3d779", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "apply_configuration", "args": {"foo": "bar"}, "priority": 42}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_event_missing_madatory_field [0.058721s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links [0.065546s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ed8c1c8f-0890-4f50-bbfc-4aaba519f212 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "ad18830f-fdc9-4dfd-a15e-2d50aeb78423", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/ad18830f-fdc9-4dfd-a15e-2d50aeb78423", "rel": "self"}, {"href": "http://localhost/ports/ad18830f-fdc9-4dfd-a15e-2d50aeb78423", "rel": "bookmark"}]}, {"uuid": "dba60900-d20d-4335-87c0-2d7686e3a8d6", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/dba60900-d20d-4335-87c0-2d7686e3a8d6", "rel": "self"}, {"href": "http://localhost/ports/dba60900-d20d-4335-87c0-2d7686e3a8d6", "rel": "bookmark"}]}, {"uuid": "01bd28c0-92d7-4db5-b6fa-3d897b964704", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/01bd28c0-92d7-4db5-b6fa-3d897b964704", "rel": "self"}, {"href": "http://localhost/ports/01bd28c0-92d7-4db5-b6fa-3d897b964704", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=3&marker=01bd28c0-92d7-4db5-b6fa-3d897b964704"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_old_api_version [0.044452s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/CUSTOM_DT1 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow deploy templates\"}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_event_type [0.056964s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_custom_fields [0.051820s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?fields=address,uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e3fd8b61-59b9-4394-a3cd-4f623653af2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "8a14aff6-dbd2-4fc6-8793-1a5dbcc795ca", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/8a14aff6-dbd2-4fc6-8793-1a5dbcc795ca", "rel": "self"}, {"href": "http://localhost/ports/8a14aff6-dbd2-4fc6-8793-1a5dbcc795ca", "rel": "bookmark"}]}, {"uuid": "c921c5bc-fe6b-4bbb-b615-ed92b94f0fa3", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/c921c5bc-fe6b-4bbb-b615-ed92b94f0fa3", "rel": "self"}, {"href": "http://localhost/ports/c921c5bc-fe6b-4bbb-b615-ed92b94f0fa3", "rel": "bookmark"}]}, {"uuid": "d8d1d7e7-7278-4189-b2a1-a7a5ca4aa7c3", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/d8d1d7e7-7278-4189-b2a1-a7a5ca4aa7c3", "rel": "self"}, {"href": "http://localhost/ports/d8d1d7e7-7278-4189-b2a1-a7a5ca4aa7c3", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=address,uuid&limit=3&marker=d8d1d7e7-7278-4189-b2a1-a7a5ca4aa7c3"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_mac_network_port_event [0.042232s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_default_limit [0.048314s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7bb2dae3-a79c-40de-935c-28ab4bf9fbb4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "62ca40d0-4a87-4a41-aa09-0c3cbb14cc12", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/62ca40d0-4a87-4a41-aa09-0c3cbb14cc12", "rel": "self"}, {"href": "http://localhost/ports/62ca40d0-4a87-4a41-aa09-0c3cbb14cc12", "rel": "bookmark"}]}, {"uuid": "a99fe735-13ed-4f1d-946e-6e12fbc45b9c", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/a99fe735-13ed-4f1d-946e-6e12fbc45b9c", "rel": "self"}, {"href": "http://localhost/ports/a99fe735-13ed-4f1d-946e-6e12fbc45b9c", "rel": "bookmark"}]}, {"uuid": "a3c6e6d0-43ef-488d-a2ed-7810374bd65f", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/a3c6e6d0-43ef-488d-a2ed-7810374bd65f", "rel": "self"}, {"href": "http://localhost/ports/a3c6e6d0-43ef-488d-a2ed-7810374bd65f", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=3&marker=a3c6e6d0-43ef-488d-a2ed-7810374bd65f"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_with_json [0.101785s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/CUSTOM_DT1.json WITH [{'path': '/steps/0/interface', 'value': 'bios', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b7d6ae46-332f-43e0-a9ab-b51df71bd36a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "efe8f0d2-2b26-49f3-a4b5-274e9ca622ee", "created_at": "2025-11-11T18:57:53.065884+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/efe8f0d2-2b26-49f3-a4b5-274e9ca622ee", "rel": "self"}, {"href": "http://localhost/deploy_templates/efe8f0d2-2b26-49f3-a4b5-274e9ca622ee", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_with_json_not_found [0.034475s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/CUSTOM_DT1.json WITH [{'path': '/steps/0/interface', 'value': 'bios', 'op': 'replace'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ec038dcf-e2ba-4f3e-8edd-3215edb27a22 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template CUSTOM_DT1.json could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_missing_mandatory_fields_network_port_event [0.058321s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail [0.043916s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0397a69f-d415-4bdb-b215-9d544bdd154f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:53.147103+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": true, "local_link_connection": {"switch_info": "switch", "switch_id": "aa:bb:cc:dd:ee:ff", "port_id": "Gig0/1"}, "physical_network": "physnet1", "pxe_enabled": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_invalid_name [0.046150s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/277e3b81-d54c-4fe6-9953-7a1572802158 WITH [{'path': '/name', 'value': 'aa:bb_cc', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b5fb0029-0503-4563-9cef-08c5b6d87dab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'aa:bb_cc' is not valid under any of the given schemas. Possible root cause: 'aa:bb_cc' does not match '^CUSTOM_[A-Z0-9_]+$'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_against_single [0.039720s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-093731cf-0927-4366-a32d-d63a3c79108b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_simple_event_type [0.058339s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_not_supported [0.031562s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?node=test-node WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-b64a557b-d7cc-4540-8d10-1dbc96d74549 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_custom_trait [0.052612s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/fa8f5b73-e989-4862-9082-3866786e9e5d WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a877271-4b9c-4422-b87f-e0ddf0cc75fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "fa8f5b73-e989-4862-9082-3866786e9e5d", "created_at": "2025-11-11T18:57:53.225647+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/fa8f5b73-e989-4862-9082-3866786e9e5d", "rel": "self"}, {"href": "http://localhost/deploy_templates/fa8f5b73-e989-4862-9082-3866786e9e5d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_ok [0.036764s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-23316253-897c-4ce6-a2ad-03926a360ff1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:53.257369+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events [0.056840s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-bab64232-3031-44f6-93d2-22782efe9dff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_standard_trait [0.047865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/e453b9d7-1ff0-4491-a942-4b86d1a23209 WITH [{'path': '/name', 'value': 'HW_CPU_X86_VMX', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b5df0ebc-4792-4ba5-8f0b-8e8f6d86966d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e453b9d7-1ff0-4491-a942-4b86d1a23209", "created_at": "2025-11-11T18:57:53.276433+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/e453b9d7-1ff0-4491-a942-4b86d1a23209", "rel": "self"}, {"href": "http://localhost/deploy_templates/e453b9d7-1ff0-4491-a942-4b86d1a23209", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_does_not_contain_event [0.048106s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'INVALID': 'fake.event'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f3ec03d7-b964-48e7-8196-8f4a85c334ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'event' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query [0.051006s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-216d1a52-bc57-4a5a-a0ea-f5227d7ae0b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:53.296633+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_info": "switch", "switch_id": "aa:bb:cc:dd:ee:ff", "port_id": "Gig0/1"}, "physical_network": "physnet1", "pxe_enabled": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_not_found [0.038449s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/e01c3e4f-5d2c-4cb6-9ed3-828b53bba387 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-15b4c8a0-34e0-4559-9534-add28b1f9a48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template e01c3e4f-5d2c-4cb6-9ed3-828b53bba387 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_invalid_event [0.027256s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'invalid.event'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f6c3dcf6-3ff0-4447-8e41-24cc42d5e621 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'invalid.event' is not one of ['network.bind_port', 'network.unbind_port', 'network.delete_port']\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_unsupported_api_version [0.031017s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b44db21d-30b6-4bda-89c9-45c7cb86b429 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach [0.053711s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': '1bab639b-d20d-445b-b99c-7f538d1a1024'} GOT Response: 204 No Content Openstack-Request-Id: req-67c70f08-87a0-4eb2-9766-cd40ce3361f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_multiple_events [0.038132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}, {'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}, {'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-a8eabb11-ab28-42d4-bd8b-3cae579a1e3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query_false [0.100574s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-90ac3490-7546-40b3-8d25-b32a38fc6b50 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} GET /v1/ports?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6bc88349-a541-40ed-a62e-6fd5be2eed46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_by_node_name [0.055191s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/node-39/vifs WITH {'id': 'b0bd4c7a-43d2-42ba-a57b-f49ce79e3bfb'} GOT Response: 204 No Content Openstack-Request-Id: req-179b247b-9593-4739-b93c-617e4992069c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_bind_port_events [0.042486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-8b5a8d56-457c-4357-940f-6f7240d6c2f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_allowed [0.055943s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?sort_key=pxe_enabled WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6f5f3351-bf3f-4405-a980-0461caf7624a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "9a412110-ac72-413a-8f85-e24c397624c2", "created_at": "2025-11-11T18:57:53.459518+00:00", "updated_at": null, "address": "52:54:00:cf:2d:30", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/9a412110-ac72-413a-8f85-e24c397624c2", "rel": "self"}, {"href": "http://localhost/ports/9a412110-ac72-413a-8f85-e24c397624c2", "rel": "bookmark"}], "portgroup_uuid": null}, {"uuid": "24b08ce0-8d3c-4374-906d-58953bba5b1c", "created_at": "2025-11-11T18:57:53.465322+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/24b08ce0-8d3c-4374-906d-58953bba5b1c", "rel": "self"}, {"href": "http://localhost/ports/24b08ce0-8d3c-4374-906d-58953bba5b1c", "rel": "bookmark"}], "portgroup_uuid": null}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_conductor_unavailable [0.035878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/node-39/vifs WITH {'id': '291be2d9-df8a-4db7-9778-6a1d206b1a8c'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7a1455c0-121b-45fa-9cee-b75f2bf8113a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"boom\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_not_allowed [0.029606s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?sort_key=pxe_enabled WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-80d785af-802f-4133-bab3-1b24edf803e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.18 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_invalid_vif_id [0.033945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'invalid%id^'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-62a600d1-2b8c-4586-af6f-6eafe26d2d97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID or name for id: invalid%id^\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_delete_port_events [0.063688s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.delete_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-2c681ff2-85d0-4f60-bd03-2aa9650daa2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_and_fields [0.036161s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-29231e8b-1c51-4f21-b705-fd54de0c4b79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_no_vif_id [0.034410s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'bad_id': '950cdd1b-9f20-4e00-84ed-d09045dd2fab'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-856adfbc-3e79-4d30-a14e-bfbf9779678c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for vif: 'id' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_locked [0.033882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'bf857b13-52da-4094-8139-e9c5b52c7a06'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-0f0148a1-a33b-4cec-b47e-62957a15de70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node is locked by host , please retry after the current operation is completed.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_false_and_fields [0.037055s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?detail=False&fields=internal_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9a2d8dd0-42ee-40f3-9312-7adc1282164d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"internal_info": {"bar": "buzz"}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_host_id [0.060755s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': ['binding:host_id', 'IS', 'NODE_UUID', 'IN', 'IRONIC'], 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b3f19bbd-bb88-48e4-80b7-bb59c929e878 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['binding:host_id', 'IS', 'NODE_UUID', 'IN', 'IRONIC'] is not of type 'string', 'null'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_not_found [0.033951s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/doesntexist/vifs WITH {'id': 'ef5ea148-308f-4658-8a77-8354dc7f7367'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6e9493db-e356-4cde-b54f-4a73d99d7619 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node doesntexist could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_old_version [0.038506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d4b320be-1500-4c96-be81-3e9a420b708a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid [0.033797s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'bbff422e-c811-4218-aec4-3f6800ff75b1', 'port_uuid': 'port-uuid', 'portgroup_uuid': 'portgroup-uuid'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f9ce42f6-d812-4880-bb32-605f54b3d0b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.67 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot specify both port_uuid and portgroup_uuid\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_with_incorrect_api_usage [0.031474s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?node=test-node&node_uuid=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-51c498de-f9b2-4178-b37c-78d52ea5c4ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_vnic_type [0.073329s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': ['binding:vnic_type', 'SHOULD', 'BE', 'TEXT']}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b92ff7b5-3897-4c32-9fa1-067a89f1a927 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['binding:vnic_type', 'SHOULD', 'BE', 'TEXT'] is not of type 'string', 'null'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid_old [0.033309s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'aa8ff301-a12c-48cf-939c-90af5a110b4c', 'port_uuid': 'port-uuid', 'portgroup_uuid': 'portgroup-uuid'} GOT Response: 204 No Content Openstack-Request-Id: req-9d8843f4-38f7-4ece-9212-69fb294d99f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_empty [0.034455s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-31a58320-0eeb-445b-bf4c-43a03e1849d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": []} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach [0.031048s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/5c36f914-bfd7-4ec1-b6e7-ee2cf67b1bc3 GOT Response: 204 No Content Openstack-Request-Id: req-1bf1bbfd-a89f-4ff7-8bc4-0fead44a4dfe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_device_id [0.053169s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': 'DEVICE_ID_SHOULD_BE_UUID', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ad3b6e32-720d-4f92-915e-28a99d7045e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for device_id: DEVICE_ID_SHOULD_BE_UUID\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_by_node_name [0.031624s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/vifs/e2788a3d-e872-48e7-9404-8ced5fb19615 GOT Response: 204 No Content Openstack-Request-Id: req-5e5cadc0-abcc-4e57-8fd7-9828f7e33c71 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin [0.060572s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b44d9d7b-01ad-4c7f-8109-159b765096cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"ports": [{"uuid": "d89ed60e-d983-4a78-ae5a-687024ec34bd", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/d89ed60e-d983-4a78-ae5a-687024ec34bd", "rel": "self"}, {"href": "http://localhost/ports/d89ed60e-d983-4a78-ae5a-687024ec34bd", "rel": "bookmark"}]}, {"uuid": "87c37db8-efc1-4725-9e5d-c31bb2a8b10e", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/87c37db8-efc1-4725-9e5d-c31bb2a8b10e", "rel": "self"}, {"href": "http://localhost/ports/87c37db8-efc1-4725-9e5d-c31bb2a8b10e", "rel": "bookmark"}]}, {"uuid": "b3bff92f-a8d6-4b53-98d6-275c0501daf0", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/b3bff92f-a8d6-4b53-98d6-275c0501daf0", "rel": "self"}, {"href": "http://localhost/ports/b3bff92f-a8d6-4b53-98d6-275c0501daf0", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_locked [0.031545s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/a8ac1d43-fe30-4d1b-9710-c6671fc25817 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-f116c25a-0b76-47d7-b4df-829449ac39ad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node is locked by host , please retry after the current operation is completed.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_mac_address [0.073185s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'INVALID_MAC_ADDRESS', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ef96d9cc-cb63-4745-a11c-769ba5e2f0de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for mac_address: INVALID_MAC_ADDRESS\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces [0.921888s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '323d2030-a388-4d0e-a095-45c34f53cfcf', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'boot_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf Openstack-Request-Id: req-42f72e39-9b38-4472-8122-17be06843197 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "323d2030-a388-4d0e-a095-45c34f53cfcf", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/ports", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/states", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/volume", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/volume", "rel": "bookmark"}]} GET /v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-47fc9a62-3939-41c8-82a2-f42121ad4c6e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "323d2030-a388-4d0e-a095-45c34f53cfcf", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": nul l, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/ports", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/states", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/volume", "rel": "self"}, {"href": "http://localhost/nodes/323d2030-a388-4d0e-a095-45c34f53cfcf/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '8bec7ae6-2185-4950-bca3-1326dd578b9b', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'console_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b Openstack-Request-Id: req-86f72e47-8aa3-44fa-8373-b7361ab95c62 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "8bec7ae6-2185-4950-bca3-1326dd578b9b", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/ports", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3- 1326dd578b9b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/states", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/volume", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/volume", "rel": "bookmark"}]} GET /v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-411870ea-29cf-4ec2-a085-1d3a8fc82108 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "8bec7ae6-2185-4950-bca3-1326dd578b9b", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/ports", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/states", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/volume", "rel": "self"}, {"href": "http://localhost/nodes/8bec7ae6-2185-4950-bca3-1326dd578b9b/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'deploy_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d Openstack-Request-Id: req-38618ad5-faa7-47f4-b01b-9eccf7096e65 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openst ack-Ironic-Api-Version: 1.40 {"uuid": "966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/ports", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/states", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/volume", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/volume", "rel": "bookmark"}]} GET /v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22ba300b-641c-4102-9a8d-f8e098c895a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/ nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/ports", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/states", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/volume", "rel": "self"}, {"href": "http://localhost/nodes/966e7e07-2a4e-4bc7-bfae-f9fdca87ca8d/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '46aefe99-ed1c-4516-8fde-4be7f775cad5', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'inspect_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5 Openstack-Request-Id: req-53dfeee5-9b70-47bb-800a-15575b781d96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "46aefe99-ed1c-4516-8fde-4be7f775cad5", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/ports", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/states", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/volume", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/volume", "rel": "bookmark"}]} GET /v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e35dbc1- 966c-4b23-9c27-d5019669f48f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "46aefe99-ed1c-4516-8fde-4be7f775cad5", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/ports", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/states", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/volume", "rel": "self"}, {"href": "http://localhost/nodes/46aefe99-ed1c-4516-8fde-4be7f775cad5/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '0a8887bf-b40e-4bfc-85a5-8c5644cccd88', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'management_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88 Openstack-Request-Id: req-289fc482-d4fb-45e1-bc93-967d556ef869 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "0a8887bf-b40e-4bfc-85a5-8c5644cccd88", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/ports", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/states", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/volume", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/volume", "rel": "bookmark"}]} GET /v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-09bbe47c-d1e0-4d99-8a4a-d07bcd7e81a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "0a8887bf-b40e-4bfc-85a5-8c5644cccd88", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/ports", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/states", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/volume", "rel": "self"}, {"href": "http://localhost/nodes/0a8887bf-b40e-4bfc-85a5-8c5644cccd88/volume", "rel": "bookmark"}]} POST /v1/nodes WIT H {'uuid': '0153ca2a-ace4-4266-ad35-3a7972363475', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'power_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475 Openstack-Request-Id: req-7fd30583-5662-4194-bc82-8ff960c138db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "0153ca2a-ace4-4266-ad35-3a7972363475", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/ports", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/states", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/volume", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/volume", "rel": "bookmark"}]} GET /v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cf2d4dcc-0aa8-460b-8cc1-1e791d1248f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "0153ca2a-ace4-4266-ad35-3a7972363475", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_in terface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/ports", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/states", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/volume", "rel": "self"}, {"href": "http://localhost/nodes/0153ca2a-ace4-4266-ad35-3a7972363475/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '37748724-74ec-4386-9e31-13f3f84b7e55', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'raid_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55 Openstack-Request-Id: req-ac6a3b48-9cc8-4ed4-92b1-31b0685fe5bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "37748724-74ec-4386-9e31-13f3f84b7e55", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/ports", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/states", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/volume", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/volume", "rel": "bookmark"}]} GET /v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-387e5725-02b0-41f3-b934-03c6d15cd7ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "37748724-74ec-4386-9e31-13f3f84b7e55", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/ports", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/states", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/volume", "rel": "self"}, {"href": "http://localhost/nodes/37748724-74ec-4386-9e31-13f3f84b7e55/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '80d19c0c-1660-45c5-ae2f-d59e10aef3ee', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'vendor_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee Openstack-Request-Id: req-293431bb-87da-4fd6-8f67-025f53ca6a0a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Versi on: 1.40 {"uuid": "80d19c0c-1660-45c5-ae2f-d59e10aef3ee", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/ports", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/states", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/volume", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/volume", "rel": "bookmark"}]} GET /v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f82ea29b-758a-4ff1-9a45-56572b65803c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "80d19c0c-1660-45c5-ae2f-d59e10aef3ee", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/80d19c0c-1660- 45c5-ae2f-d59e10aef3ee/ports", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/states", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/volume", "rel": "self"}, {"href": "http://localhost/nodes/80d19c0c-1660-45c5-ae2f-d59e10aef3ee/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '34f9496d-8039-4757-90dd-4a65a2201f81', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'network_interface': 'flat', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81 Openstack-Request-Id: req-49529fe0-05c2-4c96-8ab9-4fcac9028df3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "34f9496d-8039-4757-90dd-4a65a2201f81", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/ports", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/states", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/volume", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/volume", "rel": "bookmark"}]} GET /v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-459535c1-0d3e-4018-964b-99a1f db86499 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "34f9496d-8039-4757-90dd-4a65a2201f81", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/ports", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/states", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/volume", "rel": "self"}, {"href": "http://localhost/nodes/34f9496d-8039-4757-90dd-4a65a2201f81/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': 'aacb3a2d-a5e0-440a-a5cc-a19de89b4df0', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'rescue_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0 Openstack-Request-Id: req-b7128a8d-2347-4104-806b-19cf5195c83a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "aacb3a2d-a5e0-440a-a5cc-a19de89b4df0", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", " local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/ports", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/states", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/volume", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/volume", "rel": "bookmark"}]} GET /v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-da32a360-4cf1-4dc0-8032-39dc528f7f88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "aacb3a2d-a5e0-440a-a5cc-a19de89b4df0", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/ports", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/states", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/volume", "rel": "self"}, {"href": "http://localhost/nodes/aacb3a2d-a5e0-440a-a5cc-a19de89b4df0/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': 'c894cdf5-5cd 6-4291-9e30-94172947380e', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'storage_interface': 'noop', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e Openstack-Request-Id: req-16d4a42e-bba9-4341-acfd-84007aa0c446 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "c894cdf5-5cd6-4291-9e30-94172947380e", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/ports", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/states", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/volume", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/volume", "rel": "bookmark"}]} GET /v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-af7aa0a6-2112-47b9-837d-ef0c984f8b0a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "c894cdf5-5cd6-4291-9e30-94172947380e", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "nam e": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/ports", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/states", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/volume", "rel": "self"}, {"href": "http://localhost/nodes/c894cdf5-5cd6-4291-9e30-94172947380e/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'bios_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319 Openstack-Request-Id: req-95447fd1-2714-4d0d-b549-995ef90f4076 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/ports", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/states", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/volume", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/volume", "rel": "bookmark"}]} GET /v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-66f1d1ad-8cc3-4143-b5ec-13bafbc6533d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/ports", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/states", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/volume", "rel": "self"}, {"href": "http://localhost/nodes/9a1d2f3c-ee84-4ce4-bac9-6c825fa8a319/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_detach_node_not_found [0.041941s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/doesntexist/vifs/33314384-6582-4d85-9649-8dee5ee69357 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ddc72961-ac50-4231-9062-23d66226cce5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node doesntexist could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin_no_match [0.073355s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-80420ceb-ae16-4a21-85fe-b4c458404cc2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_port_id [0.059008s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': 'PORT_ID_SHOULD_BE_UUID', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-eab22bcd-586f-459e-96f9-3a0308f4d053 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for port_id: PORT_ID_SHOULD_BE_UUID\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_list [0.032943s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-158ab5a5-c44b-4a25-ab54-5ec358a66546 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"vifs": []} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_not_supported [0.043489s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?node=test-node WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-53da188d-7b20-4f41-a9fc-746ddc03e954 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_subcontroller_old_version [0.029577s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_status [0.065450s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': ['status', 'SHOULD', 'BE', 'TEXT'], 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b74b7757-23e3-4af2-9817-2ea7e930dad0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['status', 'SHOULD', 'BE', 'TEXT'] is not of type 'string'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeInventory.test_get_inventory [0.037315s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/inventory WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-20d11e09-ed2a-4988-b6be-53e500f06d37 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.81 {"inventory": {"cpu": {"count": 1, "model_name": "qemu64", "architecture": "x86_64"}}, "plugin_data": {"disks": [{"name": "/dev/vda"}]}} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_ok [0.059026s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0ee34ec0-0b9f-47e1-b91b-ff2b0f4c00e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"ports": [{"uuid": "d9ae275f-175a-4fc5-b35d-7ecf96fd596a", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/d9ae275f-175a-4fc5-b35d-7ecf96fd596a", "rel": "self"}, {"href": "http://localhost/ports/d9ae275f-175a-4fc5-b35d-7ecf96fd596a", "rel": "bookmark"}]}, {"uuid": "dc6761f2-7a3f-4e91-ba85-740634413f17", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/dc6761f2-7a3f-4e91-ba85-740634413f17", "rel": "self"}, {"href": "http://localhost/ports/dc6761f2-7a3f-4e91-ba85-740634413f17", "rel": "bookmark"}]}, {"uuid": "7bdc4e07-c0c8-42f3-a347-0e2e0dab1111", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/7bdc4e07-c0c8-42f3-a347-0e2e0dab1111", "rel": "self"}, {"href": "http://localhost/ports/7bdc4e07-c0c8-42f3-a347-0e2e0dab1111", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unbind_port_events [0.039167s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.unbind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-6e260cb4-cc1e-4990-876d-cb79c3e3ee32 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_uuid_and_name [0.038194s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?node_uuid=1be26c0b-03f2-4d2e-ae87-c02d7f33c123&node=node-name WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-14b157f1-86d4-4568-834a-22e631467695 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:53.981035+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unknown_event_property [0.032702s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.unbind_port', 'UNKNOWN': 'EVENT_PROPERTY'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-98624feb-25e7-436a-adc6-53d1e51977e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'port_id' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeInventory.test_get_inventory_no_inventory [0.071988s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/inventory WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9366ed8c-84e1-453c-8b90-f61ab7700041 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.81 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node inventory record for node 1 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events [0.041985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-96f60cda-1656-46db-8579-b6fa0bd2ef1a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces_bad_version [0.233295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'boot_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-09cb30ba-521c-4ffa-9a09-367622558645 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'console_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-1e79df51-033e-4cfd-b4aa-9171ae74f086 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'deploy_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-1e158dc3-8c40-4a62-957f-80fca93213ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'inspect_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-338563fa-82c1-48ff-bd97-95c49083d52e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'manageme nt_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-0f15d602-ab26-4975-8b59-e2f5b8411c84 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'power_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-8d28cbbd-492d-40a1-9f91-4abf57125af4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'raid_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-b7f21cbe-1b5b-45bc-aa60-4ddec1fa8daf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'vendor_interface': 'fake', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-9ac8545c-0916-4744-b354-419626f300a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_name [0.060263s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?portgroup=fooname WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ae49a734-a3d6-4d29-9807-ca2ac06b1d4d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:54.028244+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_does_not_contain_event [0.032661s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'INVALID': 'fake.event'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-27b2e70c-f6ac-4dbb-9aae-9c1f10c1c697 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'event' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeInventory.test_get_old_version [0.075435s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/inventory WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_invalid_event [0.027565s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'invalid.event'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1ed21060-d961-45ac-9e74-b89df0aad5fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'invalid.event' is not one of ['network.bind_port', 'network.unbind_port', 'network.delete_port']\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid [0.050808s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1d5bff80-371c-458c-86e3-2e84c608b25d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:54.090109+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_traits [0.081283s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'traits': ['CUSTOM_4']} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ee0dfde6-4526-41bb-84bc-11f745682dae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: Additional properties are not allowed ('traits' was unexpected)\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_and_node_uuid [0.035457s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4&node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-164d2f56-f739-4800-a572-47405aeaea03 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_unsupported_api_version [0.063424s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-01699a0f-43e7-44e8-8103-1940ca4c8837 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin [0.046993s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-db1e1cde-8f4f-46ec-b4cf-d65ee03bc85a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:54.180365+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_multiple_events [0.041754s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}, {'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}, {'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-0cf66ddf-4ee8-4662-9288-57c8d9c004bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_storage_interface_old_api_version [0.112697s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'storage_interface': 'cinder', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-96b15a34-759a-4a6e-ae92-5464ced80a81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePatch.test_node_add_parent [0.161923s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/8fd8cb29-6391-41b2-abdd-0d80e28d2a82 WITH [{'path': '/parent_node', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-38c09b7e-776d-4c1d-9ae7-393d9cfe05a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.128495+00:00", "updated_at": "2013-12-03T06:20:41.184720+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": "djarin", "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin_no_match [0.048385s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5b91e27e-7ee9-42a0-b1b0-313011811193 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_bind_port_events [0.033887s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-2e9cffb3-347c-44ac-b99a-08db235b9b96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_older_api_version [0.034409s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?portgroup=6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-902758a6-83f0-4382-8079-10f4bc72078f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.14 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePatch.test_node_add_parent_node_fail_wrong_version [0.065748s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5e2ac936-b147-4cb1-be68-478806340184 WITH [{'path': '/parent_node', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-611fecad-23cd-48fa-b620-b8603357e036 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_custom_fields [0.043831s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-499c23cd-e1a9-4865-b8a7-c80f49784dc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "508b92eb-ee29-4b1c-9a0a-ce5d755f7570", "extra": {}, "links": [{"href": "http://localhost/v1/ports/508b92eb-ee29-4b1c-9a0a-ce5d755f7570", "rel": "self"}, {"href": "http://localhost/ports/508b92eb-ee29-4b1c-9a0a-ce5d755f7570", "rel": "bookmark"}]}, {"uuid": "9fd85076-4d12-4e9f-ae11-ae1286c70fb4", "extra": {}, "links": [{"href": "http://localhost/v1/ports/9fd85076-4d12-4e9f-ae11-ae1286c70fb4", "rel": "self"}, {"href": "http://localhost/ports/9fd85076-4d12-4e9f-ae11-ae1286c70fb4", "rel": "bookmark"}]}, {"uuid": "c0cb0489-b994-4259-9064-25892fe7cdba", "extra": {}, "links": [{"href": "http://localhost/v1/ports/c0cb0489-b994-4259-9064-25892fe7cdba", "rel": "self"}, {"href": "http://localhost/ports/c0cb0489-b994-4259-9064-25892fe7cdba", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_collection_next_marker_no_uuid [0.044142s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?fields=address&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e4e02067-ca74-4ae1-904b-7d5df9dfe71d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/6bbd7823-75e6-44d6-8323-e204928f33a4", "rel": "self"}, {"href": "http://localhost/ports/6bbd7823-75e6-44d6-8323-e204928f33a4", "rel": "bookmark"}]}, {"address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/2621b744-0e0f-47c2-95af-ca111fb9eebe", "rel": "self"}, {"href": "http://localhost/ports/2621b744-0e0f-47c2-95af-ca111fb9eebe", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=address&limit=2&marker=2621b744-0e0f-47c2-95af-ca111fb9eebe"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_driver_info [0.164288s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-93525853-627a-42fa-989a-5c0625c4f3e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.365810+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5c8254a4-849f-4eaa-9f62-a308a96151be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.365810+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_api_version [0.040810s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,extra WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e0ca1554-d0a4-45d3-a345-b8947900ff79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_delete_port_events [0.191971s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.delete_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-ce0aa142-a3c2-43c5-a022-28a8994189c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_fields [0.040543s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-997845aa-9ad2-4781-989b-1f7df58d967c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_host_id [0.030415s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': ['binding:host_id', 'IS', 'NODE_UUID', 'IN', 'IRONIC'], 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4cefc118-54aa-4224-9349-613eb222142b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['binding:host_id', 'IS', 'NODE_UUID', 'IN', 'IRONIC'] is not of type 'string', 'null'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_vnic_type [0.030244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': ['binding:vnic_type', 'SHOULD', 'BE', 'TEXT']}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-742dd88e-8be6-4cf7-b5ef-0a91c0cad50b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['binding:vnic_type', 'SHOULD', 'BE', 'TEXT'] is not of type 'string', 'null'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePatch.test_node_add_parent_node_not_uuid [0.199259s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/ab17c0d4-df48-4b60-afc8-9175cd7c589c WITH [{'path': '/parent_node', 'value': 'djarin', 'op': 'add'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ce0d087a-5cd6-4dab-adf3-f5aa31c9e56b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"(sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.\\n[SQL: SELECT allocations.id AS allocations_id, allocations.uuid AS allocations_uuid, allocations.name AS allocations_name, allocations.node_id AS allocations_node_id, allocations.state AS allocations_state, allocations.owner AS allocations_owner, allocations.last_error AS allocations_last_error, allocations.resource_class AS allocations_resource_class, allocations.traits AS allocations_traits, allocations.candidate_nodes AS allocations_candidate_nodes, allocations.extra AS allocations_extra, allocations.conductor_affinity AS allocations_conductor_affinity, allocations.version AS allocations_version, allocations.created_at AS allocations_created_at, allocations.updated_at AS allocations_updated_at \\nFROM allocations \\nWHERE allocations.id = ?]\\n[parameters: (,)]\\n(Background on this error at: https://sqlalche.me/e/20/rvf5)\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_is_smartnic [0.051860s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,is_smartnic WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e6f72e68-7b7b-4d58-895c-0ef72160bde4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.52 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,is_smartnic WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9f0e3ec2-e957-463f-a2cb-60baae3ca29d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.53 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "is_smartnic": true, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_device_id [0.030729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': 'DEVICE_ID_SHOULD_BE_UUID', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-33b54199-120f-44de-8cf8-2cbd2b52c922 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for device_id: DEVICE_ID_SHOULD_BE_UUID\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_mac_address [0.031175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'INVALID_MAC_ADDRESS', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b7c65b44-5b90-4fcc-ad8a-8f1952f0d18e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for mac_address: INVALID_MAC_ADDRESS\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network [0.047738s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,physical_network WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-4196508f-6989-490b-84a2-b53556fa9957 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,physical_network WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a834f13d-e5fc-4376-beb1-a5f982dc2ad0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "physical_network": "physnet1", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_extra [0.172336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-75043e40-798c-4b10-84a4-678f92bf5694 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.536917+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6eb609f7-7dd3-4bd4-bef0-c6ad6dcdc66c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.536917+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_port_id [0.036491s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': 'PORT_ID_SHOULD_BE_UUID', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-30210992-9fea-44b7-a9dc-09081866751d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for port_id: PORT_ID_SHOULD_BE_UUID\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network_upgrade [0.048704s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,physical_network WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-d7731057-2549-45f7-8c29-8700e6d24600 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePatch.test_node_remove_parent [0.153933s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/a16d9ef9-bfff-4551-9b49-9b927b8bb8d8 WITH [{'path': '/parent_node', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ac850607-414d-4901-8ac4-1af2567196af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.555984+00:00", "updated_at": "2013-12-03T06:20:41.184720+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": "djarin", "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_status [0.056827s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.bind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': ['status', 'SHOULD', 'BE', 'TEXT'], 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a55016cc-191c-445e-aba0-378601a6512b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: ['status', 'SHOULD', 'BE', 'TEXT'] is not of type 'string'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one [0.045796s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0210bfa7-d98b-43c8-a7f2-1060b7390475 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:54.654832+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_properties [0.137930s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-a9d741b0-4e73-4c95-8e17-4ddcc2c18e4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.698345+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4ef2da77-d024-4eab-adcf-07bdd98f34ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.698345+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unbind_port_events [0.073715s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.unbind_port', 'port_id': '11111111-aaaa-bbbb-cccc-555555555555', 'mac_address': 'de:ad:ca:fe:ba:be', 'status': 'ACTIVE', 'device_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:host_id': '22222222-aaaa-bbbb-cccc-555555555555', 'binding:vnic_type': 'baremetal'}]} GOT Response: 204 No Content Openstack-Request-Id: req-2420912c-c103-4ccc-ac4f-d6de18161f73 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardPost.test_create_node_with_shard [0.086692s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'shard': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-95d53352-9fe2-4e57-8467-3340e1e441af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.733242+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": "foo", "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6d402b38-1b0f-4c74-aae7-846ff4aa9367 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.733242+00:00", "updated_at": null, "automated_clean": null, "bios_interface": "fake", "boot_interface": "fake", "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": "fake", "dep loy_interface": "fake", "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_data": {}, "network_interface": "flat", "owner": null, "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "enroll", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": "foo", "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unknown_event_property [0.067183s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'network.unbind_port', 'UNKNOWN': 'EVENT_PROPERTY'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9db74068-e653-45a0-880f-c73a0265e2d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for evts: 'port_id' is a required property\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_chassis_uuid [0.104665s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-d73fa428-3f97-4268-9cf8-3c5ab93a478a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.797994+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b5642ba9-d1bf-456e-a95b-3bf4d86804d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.797994+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_associated [0.083904s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-24169d54-6659-4664-ac47-c86084c1fab4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is associated with instance aaaaaaaa-1111-bbbb-2222-cccccccccccc.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_default_conductor_group [0.085180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-b3d97e0c-3d01-4ad1-8053-f2755992ea6d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.887831+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-80e037fc-7048-482e-bacb-a6ececd8376f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.887831+00:00", "updated_at": null, "bios_interface": "fake", "boot_interface": "fake", "clean_step": {}, "conductor_group": "magic", "console_enabled": false, "console_interface": "fake", "deploy_interface": "fake", "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": "fake", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": "fake", "name": null, "network_interface": "flat", "power_interface": "fake", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": "fake", "rescue_interface": "fake", "reservation": null, "resource_class": null, "storage_interface": "noop", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": "fake", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes /1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_custom_fields [0.244215s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=address,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-00bb90a1-f5e9-4b03-8c53-e4e45369b7a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"address": "52:54:00:cf:2d:31", "extra": {}, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_portgroup_is_none [0.037611s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ded584f2-80cc-4143-801e-d0e1c9195d4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:54.945880+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardPost.test_create_node_with_shard_fail_wrong_version [0.213851s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'shard': 'foo', 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-0e2913c7-9e21-4628-9a0d-a5713aa84387 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node [0.079041s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 204 No Content Openstack-Request-Id: req-5256ded5-f423-4e44-8e75-a158ac684418 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach [0.034577s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {'device_type': 'cdrom', 'image_url': 'https://image', 'image_download_source': 'http'} GOT Response: 204 No Content Openstack-Request-Id: req-b490a6aa-7952-4dc7-b735-c2a50fe93079 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_default_resource_class [0.090584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 Openstack-Request-Id: req-5cad137f-1bfd-407e-b3c7-e01bbfd5f4fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.984124+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1716ee73-3590-4766-9a84-b9f208ce8e55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:54.984124+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": "flat", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "class1", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_advanced_net [0.059481s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f3b4c6b2-d60b-42e2-9975-4c97b4887637 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.18 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:54.992064+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f715344d-927a-4fe1-832e-ae567d8ab623 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.19 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:54.992064+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_info": "switch", "switch_id": "aa:bb:cc:dd:ee:ff", "port_id": "Gig0/1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_invalid_device_type [0.031815s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {'device_type': 'cat', 'image_url': 'http://image'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9ef5d634-b5af-4aaf-964f-1db2877207b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for vmedia: 'cat' is not one of ['disk', 'cdrom', 'floppy']\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name [0.079163s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo.1 GOT Response: 204 No Content Openstack-Request-Id: req-171949bf-5ce8-48e1-9d64-582c3c91fe7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_invalid_image_url [0.030953s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {'device_type': 'cdrom', 'image_url': 'abcd'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1c472241-206c-40d3-ae64-1610dbdd3d34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unsupported or missing URL scheme: \", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_internal_field [0.070403s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'instance_uuid': None, 'instance_info': {'configdrive': 'TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQ=', 'image_url': 'http://example.com/test_image_url', 'foo': 'bar'}, 'driver': 'fake-hardware', 'driver_info': {'foo': 'bar', 'fake_password': 'fakepass'}, 'properties': {'cpu_arch': 'x86_64', 'local_gb': '10', 'memory_mb': '4096'}, 'maintenance': False, 'console_enabled': False, 'extra': {}, 'chassis_uuid': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'reservation': 'fake'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cb66c8d3-2fd5-4a8c-a9d8-b3d04b36ea2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for node: Additional properties are not allowed ('reservation' was unexpected)\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_internal_info [0.058526s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c4f6cfae-7cab-4c6e-9960-176a4ea8440a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.044426+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2aaf32cc-b56c-499f-be78-036b32ae7b5c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.18 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.044426+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"foo": "bar"}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_missing_device_type [0.030605s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {'image_url': 'http://image'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a677d4f7-3ad3-4811-8286-09a61cebbd3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for vmedia: 'device_type' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_unsupported [0.065974s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e100c6ed-b950-4390-9a44-5eba4c4a8a37 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node foo could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_missing_image_url [0.030731s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {'device_type': 'cdrom'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f57e653c-90f5-4c0d-873b-0771f6198f46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for vmedia: 'image_url' is a required property\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_portgroups_subresource [0.048865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-730bfc2d-0817-4a50-b64f-21e042686866 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_is_smartnic [0.056200s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-43a99e1e-3868-4a9f-86bb-66714612c130 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.52 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.114299+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5fde5a0b-e6dc-4a8c-98c9-8f9e36e58e44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.53 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.114299+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": true, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_required_only [0.033701s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {'device_type': 'cdrom', 'image_url': 'http://image'} GOT Response: 204 No Content Openstack-Request-Id: req-b0d33619-0a7c-418f-907a-3a7e64ad0a67 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_wrong_version [0.027584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {'device_type': 'cdrom', 'image_url': 'http://image'} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource [0.054244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6de3c1be-74bc-459e-a2b3-1b48fad73eed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_with_json [0.072125s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo.json GOT Response: 204 No Content Openstack-Request-Id: req-ca88fa04-7076-48df-a96e-eea8c87c5d30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_ovn_vtep [0.061504s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8facf18-0ab3-4afd-bd33-e7d8e85f3ce8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.18 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.168597+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-265b46e9-147f-4859-b137-14eb24fab07d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.89 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.168597+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-382301db-2afb-4a09-a2cb-e9a23766f59d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.168597+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"port_id": "42", "vtep-logical-switch": "lswitch", "vtep-physical-switch": "jswitch"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_everything [0.031602s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia GOT Response: 204 No Content Openstack-Request-Id: req-7bc745ae-25a5-4a54-9dff-9782e2217602 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource_no_node_id [0.038038s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network [0.045538s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-34dbbb45-ffd1-4c97-aa99-1352acb25ffd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.222760+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-879b6fd2-ff38-4efc-9821-4a63924661f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.222760+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": "physnet1", "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_several_via_argument [0.031357s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia?device_types=cdrom&device_types=disk GOT Response: 204 No Content Openstack-Request-Id: req-d84089e5-547c-4239-8c96-d4dba99039b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode [0.077595s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 202 Accepted Openstack-Request-Id: req-df80ae80-b3b5-4cff-8b86-51cd0d2e844d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource [0.049026s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d65fff25-8bfe-44ab-a4a6-4984b6d5a9d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_specific_via_argument [0.037799s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia?device_types=cdrom GOT Response: 204 No Content Openstack-Request-Id: req-58c51950-414d-46a4-b970-1ea9f68dc7ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode_by_name [0.032959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo/maintenance GOT Response: 202 Accepted Openstack-Request-Id: req-37268182-2817-4014-970a-fb54750a6ab4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource_no_node_id [0.036909s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network_upgrade [0.085227s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aaf86449-33f6-4e00-a195-b22aa7cd3ca4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.294650+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found [0.026576s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a067982f-8d8a-4224-8e2b-840f3ea9fddf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_specific_via_url [0.055112s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia/cdrom GOT Response: 204 No Content Openstack-Request-Id: req-36da8d37-ad5e-46f8-a0e4-2b5592ec477d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name [0.026741s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c180d01e-2166-46db-a9fd-1abea9e613fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node foo could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_wrong_device_types [0.027918s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia?device_types=cdrom,cat GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2e57e111-60d3-4f03-a5b7-6423e65a517b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid device type(s) cat (valid are disk, cdrom, floppy)\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found_by_name_unsupported [0.026778s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-418e9bca-15dc-4834-9ec5-b8e53426684b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node foo could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_wrong_version [0.026292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_targets_subresource [0.086180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f4ed9a39-2154-4fe5-bcbb-853fe1d709de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_portgroup_subresource [0.047916s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-783855d1-29e9-47f7-89d3-fc946824ba75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_portgroup_uuid [0.115900s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3c22372e-505b-44bb-b7fc-d45e862b3d55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.23 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.393375+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c9de0c36-16ef-4526-84b6-7c711ac4a3af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:55.393375+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_async [0.041028s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test WITH {'foo': 'bar'} GOT Response: 202 Accepted Openstack-Request-Id: req-c90e36d0-48b0-4724-9def-c3a501021f26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_get [0.070086s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0efc7546-cc08-4840-b1be-58d2c2ebdf83 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 [{"media_types": ["CD", "DVD"], "inserted": "false", "image": ""}, {"media_types": ["Floppy", "USBStick"], "inserted": "false", "image": ""}] {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource [0.045733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2d10bd7a-78c3-465a-951a-9d9aa357ea54 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_by_name [0.042776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/node-109/vendor_passthru/test WITH {'foo': 'bar'} GOT Response: 202 Accepted Openstack-Request-Id: req-6f265648-dd54-4686-93da-af619c34172d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource_no_port_id [0.031634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9b628d18-c486-43c7-b5d9-ec3b0ca32710 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: port_uuid\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_get_wrong_version [0.057459s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-85803671-eab7-4ebb-8c37-2f1de12f504d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.92 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The resource could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_delete [0.041547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test GOT Response: 202 Accepted Openstack-Request-Id: req-94687b79-84ee-4260-a2e8-f2b95b972189 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links [0.100801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/83ae0b7c-f629-4255-9353-9f0189f42c3a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e1155261-af1a-452a-8438-cabf253b1550 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "83ae0b7c-f629-4255-9353-9f0189f42c3a", "created_at": "2025-11-11T18:57:55.480538+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/83ae0b7c-f629-4255-9353-9f0189f42c3a", "rel": "self"}, {"href": "http://localhost/ports/83ae0b7c-f629-4255-9353-9f0189f42c3a", "rel": "bookmark"}]} GET /v1/ports/83ae0b7c-f629-4255-9353-9f0189f42c3a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-70278752-111f-4e35-891a-4eca8ebd9637 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "83ae0b7c-f629-4255-9353-9f0189f42c3a", "created_at": "2025-11-11T18:57:55.480538+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/83ae0b7c-f629-4255-9353-9f0189f42c3a", "rel": "self"}, {"href": "http://localhost/ports/83ae0b7c-f629-4255-9353-9f0189f42c3a", "rel": "bookmark"}]} GET /ports/83ae0b7c-f629-4255-9353-9f0189f42c3a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3f1c31dd-00f2-4fed-b695-cd05cfcb1b41 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "83ae0b7c-f629-4255-9353-9f0189f42c3a", "created_at": "2025-11-11T18:57:55.480538+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/83ae0b7c-f629-4255-9353-9f0189f42c3a", "rel": "self"}, {"href": "http://localhost/ports/83ae0b7c-f629-4255-9353-9f0189f42c3a", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_get [0.040214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f4a486eb-d654-4e41-991b-5b0dbc27182e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 "foo" {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource [0.074708s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-29e85e78-0cc2-466b-83dc-ccddc278ad7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_methods [0.042178s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1841fa2c-910c-450f-8a77-6b401cc1e6f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"foo": "bar"} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0787615c-3bb0-4c36-858e-f709c7c9bac5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"foo": "bar"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_cleanhold [0.106051s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'abort'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-487ab2de-ca87-44e4-a3bc-1ee748663c81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.85 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links_public_url [0.116446s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e0689c88-424e-4265-aad6-a9c098eeb24c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "cb04b2dc-6820-4efe-8dd9-b14994a9d871", "created_at": "2025-11-11T18:57:55.597490+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://foo/v1/ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871", "rel": "self"}, {"href": "http://foo/ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871", "rel": "bookmark"}]} GET /v1/ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-09b47645-7f8e-4d75-8594-11b840b632d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "cb04b2dc-6820-4efe-8dd9-b14994a9d871", "created_at": "2025-11-11T18:57:55.597490+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://foo/v1/ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871", "rel": "self"}, {"href": "http://foo/ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871", "rel": "bookmark"}]} GET /ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-174781cc-e3fe-4bc0-babb-a359ac3c270f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "cb04b2dc-6820-4efe-8dd9-b14994a9d871", "created_at": "2025-11-11T18:57:55.597490+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://foo/v1/ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871", "rel": "self"}, {"href": "http://foo/ports/cb04b2dc-6820-4efe-8dd9-b14994a9d871", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource_no_connector_id [0.078177s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-06b76a6d-04a9-4d23-b2cc-bf84eaa870be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: connector_uuid\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_no_such_method [0.045743s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test WITH {'foo': 'bar'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b62b9ea0-f592-4c2a-8de4-358aadb657ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver fake-hardware does not support test (disabled or not implemented).\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_cleanwait [0.048152s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'abort'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-7efb51ea-5e85-40d7-9de2-ff6e8f0e96fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.13 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_put [0.039098s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test WITH {'test_key': 'test_value'} GOT Response: 202 Accepted Openstack-Request-Id: req-77687471-2b20-45d8-b472-6c599e845359 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {2} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_targets_subresource [0.069286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-66ca7ab9-af30-43e2-94bf-f7acb5421670 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_deployhold [0.051235s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'abort'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-31bc82bf-9daa-4042-bc03-33437eb9d60a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.85 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden [0.090321s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c2b7e28a-5014-48c8-81eb-ec19132f2a13 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_sync [0.046114s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/test WITH {'foo': 'bar'} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c2bdc92a-2de8-4023-93aa-5b32d502acec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"cat": "meow"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_invalid_state [0.047172s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'abort'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-82d241db-70ba-446d-b087-923084f3709d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.13 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"abort\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"cleaning\\\".\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_without_method [0.036369s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru WITH {'foo': 'bar'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-68ceee36-f079-4f76-831d-5ee5fa662506 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: method\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_error [0.089027s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=blah WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5bbbe85c-18c7-4325-9588-79975402ad16 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid associated: Unrecognized value 'blah', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_active_fails [0.045505s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'adopt'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d1936899-6b04-4d09-82f2-0f292168e7b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.17 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"adopt\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"active\\\".\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden_no_project [0.087461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-12813b33-36fe-4a19-9697-8ea8da39ed16 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait [0.058437s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits/CUSTOM_3 WITH {} GOT Response: 204 No Content Location: http://localhost/v1/nodes/node-39/traits/CUSTOM_3 Openstack-Request-Id: req-807b3f7c-3eaa-4175-acfa-c492b96cb72f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_adoptfail [0.042586s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'adopt'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-70669a98-6294-4f01-9683-021987036bc7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.17 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_insensitive [0.101026s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e8391a16-3d46-46df-b11a-044218cfcfe0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "f28a5d5b-dd38-4850-9a80-93a0c4f771ae", "instance_uuid": "619d95b4-ed88-47a1-a62c-4ea839772f0f", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f28a5d5b-dd38-4850-9a80-93a0c4f771ae", "rel": "self"}, {"href": "http://localhost/nodes/f28a5d5b-dd38-4850-9a80-93a0c4f771ae", "rel": "bookmark"}]}, {"uuid": "a039c286-d371-46cd-8505-23143da88909", "instance_uuid": "3b73f098-764c-47ee-ab21-33e0296971d8", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/a039c286-d371-46cd-8505-23143da88909", "rel": "self"}, {"href": "http://localhost/nodes/a039c286-d371-46cd-8505-23143da88909", "rel": "bookmark"}]}, {"uuid": "958b42fa-65ec-4a55-9938-d9c467651f9a", "instance_uuid": "338534fc-e263-45d3-9249-cd19da524558", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/958b42fa-65ec-4a55-9938-d9c467651f9a", "rel": "self"}, {"href": "http://localhost/nodes/958b42fa-65ec-4a55-9938-d9c467651f9a", "rel": "bookmark"}]}, {"uuid": "86413832-aed0-45e2-b283-e911dcd6413c", "instance_uuid": "d558a368-c9f4-4214-bfeb-ddd7d2fba532", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/86413832-aed0-45e2-b283-e911dcd6413c", "rel": "self"}, {"href": "http://localhost/nodes/86413832-aed0-45e2-b283-e911dcd6413c", "rel": "bookmark"}]}]} GET /v1/nodes?associated=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dc0d5884-a791-48ea-9a71-84629e872213 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "f28a5d5b-dd38-4850-9a80-93a0c4f771ae", "instance_uuid": "619d95b4-ed88-47a1-a62c-4ea839772f0f", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f28a5d5b-dd38-4850-9a80-93a0c4f771ae", "rel": "self"}, {"href": "http://localhost/nodes/f28a5d5b-dd38-4850-9a80-93a0c4f771ae", "rel": "bookmark"}]}, {"uuid": "a039c286-d371-46cd-8505-23143da88909", "instance_uuid": "3b73f098-764c-47ee-ab21-33e0296971d8", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/a039c286-d371-46cd-8505-23143da88909", "rel": "self"}, {"href": "http://localhost/nodes/a039c286-d371-46cd-8505-23143da88909", "rel": "bookmark"}]}, {"uuid": "958b42fa-65ec-4a55-9938-d9c467651f9a", "instance_uuid": "338534fc-e263-45d3-9249-cd19da524558", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/958b42fa-65ec-4a55-9938-d9c467651f9a", "rel": "self"}, {"href": "http://localhost/nodes/958b42fa-65ec-4a55-9938-d9c467651f9a", "rel": "bookmark"}]}, {"uuid": "86413832-aed0-45e2-b283-e911dcd6413c", "instance_uuid": "d558a368-c9f4-4214-bfeb-ddd7d2fba532", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/86413832-aed0-45e2-b283-e911dcd6413c", "rel": "self"}, {"href": "http://localhost/nodes/86413832-aed0-45e2-b283-e911dcd6413c", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_manage [0.044491s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'adopt'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-ab492f42-c3e7-4576-8e1e-c764bf194013 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.17 {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_locked [0.055647s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits/CUSTOM_3 WITH {} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-5198a80d-defe-4b37-aeec-62467526b98c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host host1, please retry after the current operation is completed.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many [0.096500s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6c8c60c3-46bd-43f1-a780-d3d02d997518 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "9b87fa94-b4dd-45f7-8283-ee3c426ed4f5", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/9b87fa94-b4dd-45f7-8283-ee3c426ed4f5", "rel": "self"}, {"href": "http://localhost/ports/9b87fa94-b4dd-45f7-8283-ee3c426ed4f5", "rel": "bookmark"}]}, {"uuid": "a93f543e-082f-4832-988b-4e8265b7a229", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/a93f543e-082f-4832-988b-4e8265b7a229", "rel": "self"}, {"href": "http://localhost/ports/a93f543e-082f-4832-988b-4e8265b7a229", "rel": "bookmark"}]}, {"uuid": "5d5aafdf-9055-43c7-b4a2-3e012f108632", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/5d5aafdf-9055-43c7-b4a2-3e012f108632", "rel": "self"}, {"href": "http://localhost/ports/5d5aafdf-9055-43c7-b4a2-3e012f108632", "rel": "bookmark"}]}, {"uuid": "7a176e98-052c-4c46-a2c9-164b0c66b93c", "address": "52:54:00:cf:2d:33", "links": [{"href": "http://localhost/v1/ports/7a176e98-052c-4c46-a2c9-164b0c66b93c", "rel": "self"}, {"href": "http://localhost/ports/7a176e98-052c-4c46-a2c9-164b0c66b93c", "rel": "bookmark"}]}, {"uuid": "f9d4c536-f6a1-4730-95f2-cac01dfc705a", "address": "52:54:00:cf:2d:34", "links": [{"href": "http://localhost/v1/ports/f9d4c536-f6a1-4730-95f2-cac01dfc705a", "rel": "self"}, {"href": "http://localhost/ports/f9d4c536-f6a1-4730-95f2-cac01dfc705a", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_raises_error_before_1_17 [0.042280s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'adopt'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-baa6d41a-d418-4493-8571-32402bb5640c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.16 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_if_node_not_found [0.054431s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits/CUSTOM_3 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dc9595fd-9332-4572-9dd9-892e69ab18e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links [0.106901s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2cbe0f2c-5d52-4380-a411-d40cbe5f3323 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "79098e24-caaa-4198-bc15-202aaf63f9c5", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/79098e24-caaa-4198-bc15-202aaf63f9c5", "rel": "self"}, {"href": "http://localhost/nodes/79098e24-caaa-4198-bc15-202aaf63f9c5", "rel": "bookmark"}]}, {"uuid": "651ba3ab-7b72-4547-97f7-7c4177b1208b", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/651ba3ab-7b72-4547-97f7-7c4177b1208b", "rel": "self"}, {"href": "http://localhost/nodes/651ba3ab-7b72-4547-97f7-7c4177b1208b", "rel": "bookmark"}]}, {"uuid": "062ff682-0336-45e7-bc76-6df9082192a7", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/062ff682-0336-45e7-bc76-6df9082192a7", "rel": "self"}, {"href": "http://localhost/nodes/062ff682-0336-45e7-bc76-6df9082192a7", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=instance_uuid,maintenance,power_state,provision_state,uuid,name&limit=3&marker=062ff682-0336-45e7-bc76-6df9082192a7"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_max_trait_limit [0.050262s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits/CUSTOM_3 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-df168062-ae24-4e3d-9f9e-40bc70dcda93 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"too many traits\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many_non_admin [0.102328s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-67bd6485-89e2-4100-b766-0f016a730723 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "43c00916-fb83-412b-b65c-1adc583d9a85", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/43c00916-fb83-412b-b65c-1adc583d9a85", "rel": "self"}, {"href": "http://localhost/ports/43c00916-fb83-412b-b65c-1adc583d9a85", "rel": "bookmark"}]}, {"uuid": "d2574ecd-d86f-441e-9fdd-30188fa7c284", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/d2574ecd-d86f-441e-9fdd-30188fa7c284", "rel": "self"}, {"href": "http://localhost/ports/d2574ecd-d86f-441e-9fdd-30188fa7c284", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_with_bad_version [0.037606s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT1 WITH {} GOT Response: 405 Method Not Allowed Allow: DELETE, GET, PATCH, POST Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_custom_fields [0.073906s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=driver_info,uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d73ff305-27d7-4c9d-83ad-41db46fa4410 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "46ada13c-39d7-4b09-b4fa-792531d454f1", "driver_info": {"fake": "value"}, "links": [{"href": "http://localhost/v1/nodes/46ada13c-39d7-4b09-b4fa-792531d454f1", "rel": "self"}, {"href": "http://localhost/nodes/46ada13c-39d7-4b09-b4fa-792531d454f1", "rel": "bookmark"}]}, {"uuid": "c7d1d6ed-1dfa-4005-b730-637bbf5219f1", "driver_info": {"fake": "value"}, "links": [{"href": "http://localhost/v1/nodes/c7d1d6ed-1dfa-4005-b730-637bbf5219f1", "rel": "self"}, {"href": "http://localhost/nodes/c7d1d6ed-1dfa-4005-b730-637bbf5219f1", "rel": "bookmark"}]}, {"uuid": "8fee68f3-3dd5-4906-86db-2a8f7994d0ef", "driver_info": {"fake": "value"}, "links": [{"href": "http://localhost/v1/nodes/8fee68f3-3dd5-4906-86db-2a8f7994d0ef", "rel": "self"}, {"href": "http://localhost/nodes/8fee68f3-3dd5-4906-86db-2a8f7994d0ef", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=driver_info,uuid&limit=3&marker=8fee68f3-3dd5-4906-86db-2a8f7994d0ef"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adopting_state [0.122910s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-78d14996-d5d6-4d3e-9ea2-62933487b3c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"active\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"adopting\\\".\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rebuild'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2de94a3c-06ee-4649-9ca9-a5810d6ba640 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"rebuild\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"adopting\\\".\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deleted'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-783154b4-ad16-4d37-9754-50690be2b417 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"deleted\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"adopting\\\".\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_one [0.072903s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-833b56f0-8547-4a49-a086-641079bf22fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_default_limit [0.054098s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22677dbd-8470-454c-b973-9f6cf1d44bd7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "646e9f9c-1433-49ba-b382-267e4a1333b0", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/646e9f9c-1433-49ba-b382-267e4a1333b0", "rel": "self"}, {"href": "http://localhost/nodes/646e9f9c-1433-49ba-b382-267e4a1333b0", "rel": "bookmark"}]}, {"uuid": "1bbd260e-576f-4524-b0db-a1255e463885", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1bbd260e-576f-4524-b0db-a1255e463885", "rel": "self"}, {"href": "http://localhost/nodes/1bbd260e-576f-4524-b0db-a1255e463885", "rel": "bookmark"}]}, {"uuid": "b0f2a7c3-71b1-47e3-8617-6dc48d7ce843", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/b0f2a7c3-71b1-47e3-8617-6dc48d7ce843", "rel": "self"}, {"href": "http://localhost/nodes/b0f2a7c3-71b1-47e3-8617-6dc48d7ce843", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=instance_uuid,maintenance,power_state,provision_state,uuid,name&limit=3&marker=b0f2a7c3-71b1-47e3-8617-6dc48d7ce843"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_bad_trait [0.081415s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits/bad_trait WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e05d3d83-e3a6-44e4-91fb-d37e16872e9d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for trait: 'bad_trait' is not valid under any of the given schemas. Possible root cause: 'bad_trait' does not match '^CUSTOM_[A-Z0-9_]+$'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_instance_uuid_param [0.039292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?instance_uuid=be5a1951-a346-4f41-b7c5-e1446ef95939 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9a473f47-74a1-4cb6-964b-400c4d9e3bda X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "032f9995-de8f-4d51-939a-a8310e13cfb5", "instance_uuid": "be5a1951-a346-4f41-b7c5-e1446ef95939", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/032f9995-de8f-4d51-939a-a8310e13cfb5", "rel": "self"}, {"href": "http://localhost/nodes/032f9995-de8f-4d51-939a-a8310e13cfb5", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_rejects_too_long_trait [0.042826s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits/CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2f2dbb62-2797-41ef-b4d4-d1a5afc56cbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for trait: 'CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT' is too long\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address [0.097396s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?address=aa:bb:cc:dd:ee:f1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9f94ff61-cc36-4c83-80dd-ba835b5469e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "75bbe7fb-6415-4697-bdaa-0403824b0ddb", "address": "aa:bb:cc:dd:ee:f1", "links": [{"href": "http://localhost/v1/ports/75bbe7fb-6415-4697-bdaa-0403824b0ddb", "rel": "self"}, {"href": "http://localhost/ports/75bbe7fb-6415-4697-bdaa-0403824b0ddb", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adoption_failed_state [0.113357s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a7b67f68-162e-43ee-b045-313b6891c444 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"active\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"adopt failed\\\".\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rebuild'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a5715f5f-c3bf-4bae-ab92-de1f3996cb4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"rebuild\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"adopt failed\\\".\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deleted'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f8b0f050-f9cf-45cc-abc9-4d28730fb471 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"deleted\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"adopt failed\\\".\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits [0.042493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits GOT Response: 204 No Content Openstack-Request-Id: req-b39884ce-6143-47a6-9f15-503af5fa0219 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_managed_state [0.054275s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6203b969-a39a-4642-b135-e86289d05a49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"active\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"manageable\\\".\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-59171b2e-1229-40e0-9b06-58791e2971b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"active\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"manageable\\\".\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-aebbb73c-0b56-43ea-a753-c987a50db09c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"active\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"manageable\\\".\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail [0.091529s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cb7bc73a-3439-402f-b4e1-da215840224f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:56.246826+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_fails_with_bad_version [0.040060s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cbf051c7-555c-4e44-ae43-035c6d2d5fd2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.36 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_invalid_address_format [0.082017s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?address=invalid-mac-format WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c072d00c-c7e1-41c5-a9f8-cbd65cd352a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-mac-format\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_older_soft_ver [0.038423s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'bios'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-adae11c1-aed7-47ff-bb4a-8271fe4aed97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"This endpoint is supported starting with the API version 1.76\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_against_single [0.059535s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cdf46b27-da91-4db9-a8be-19b05e2a841c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_with_chassis [0.062878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits GOT Response: 204 No Content Openstack-Request-Id: req-c00fbfd9-46fc-48a9-8468-1cf321cd8b01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_valid_soft_ver [0.052972s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'bios'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-420deb7a-b844-4b45-8266-8f957bbcf1c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_forbidden [0.028870s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-36e505f1-e845-402c-aaf5-5180dd97a019 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin [0.089949s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?address=aa:bb:cc:dd:ee:f1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-054abd9c-918c-4145-8484-a381471ab6cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "b2539af8-94f0-474e-8f82-3764ceac7f95", "address": "aa:bb:cc:dd:ee:f1", "links": [{"href": "http://localhost/v1/ports/b2539af8-94f0-474e-8f82-3764ceac7f95", "rel": "self"}, {"href": "http://localhost/ports/b2539af8-94f0-474e-8f82-3764ceac7f95", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid [0.039609s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?instance_uuid=6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c30f902c-17cd-4279-aeeb-fdd41a488298 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:56.412598+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_invalid_request [0.057727s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'unsupported-efi'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-09c4ebb6-8f9e-4f4a-91cc-3b1f2467f31d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid boot mode unsupported-efi requested for node. Allowed boot modes are: bios, uefi\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait [0.073475s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits/CUSTOM_1 GOT Response: 204 No Content Openstack-Request-Id: req-eb239bc1-a977-4b15-b660-3c7e5cdf6e67 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid_project_match [0.039964s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?instance_uuid=6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-65af755d-b525-461b-b49e-493bb373e897 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:56.453027+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "46c0bf8a-846d-49a5-9724-5a61a5efa6bf", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_older_soft_ver [0.038088s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cdc2dec1-4cee-41f7-9156-5d809aad4e34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"This endpoint is supported starting with the API version 1.76\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin_no_match [0.097573s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?address=aa:bb:cc:dd:ee:f1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-18ff7cb4-16a3-4afc-abd6-9c2d844aa41d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid_project_not_match [0.039287s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?instance_uuid=6eccd391-961c-4da5-b3c5-e2fa5cfbbd9d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b13a568b-987d-4afa-b88c-4ba6b7bca0e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": []} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbid_project_mismatch [0.029577s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?project=54321 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8ba8aa31-bf17-4c2a-a05e-560d20bcf0ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_locked [0.082197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits/CUSTOM_1 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-d2c58895-2f3a-4f13-b583-7af13e52f1b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host host1, please retry after the current operation is completed.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_existent_address [0.056848s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?address=aa:bb:cc:dd:ee:ff WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b98fb437-daeb-491e-961f-c26eb6fd05a1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": []} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_valid_soft_ver [0.081702s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-21be9441-4728-470a-afb8-485679de7d8e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden [0.056520s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dac3b23f-c2cc-434d-bc38-3ffa891110ad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"nodes": [{"uuid": "968d1896-1e97-409e-8dc6-8cdae7916083", "created_at": "2025-11-11T18:57:56.562568+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": "12345", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/968d1896-1e97-409e-8dc6-8cdae7916083", "rel": "self"}, {"href": "http://localhost/nodes/968d1896-1e97-409e-8dc6-8cdae7916083", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/968d1896-1e97-409e-8dc6-8cdae7916083/ports", "rel": "self"}, {"href": "http://localhost/nodes/968d1896-1e97-409e-8dc6-8cdae7916083/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/968d1896-1e97-409e-8dc6-8cdae7916083/states", "rel": "self"}, {"href": "http://localhost/nodes/968d1896-1e97-409e-8dc6-8cdae7916083/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/968d1896-1e97-409e-8dc6-8cdae7916083/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/968d1896-1e97-409e-8dc6-8cdae7916083/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/968d1896-1e97-409e-8dc6-8cdae7916083/volume", "rel": "self"}, {"href": "http://localhost/nodes/968d1896-1e97-409e-8dc6-8cdae7916083/volume", "rel": "bookmark"}]}, {"uuid": "6422b8d2-f7d6-4bed-a3cd-f34d563f62b8", "created_at": "2025-11-11T18:57:56.564246+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": "12345", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired _reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8", "rel": "self"}, {"href": "http://localhost/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8/ports", "rel": "self"}, {"href": "http://localhost/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8/states", "rel": "self"}, {"href": "http://localhost/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8/volume", "rel": "self"}, {"href": "http://localhost/nodes/6422b8d2-f7d6-4bed-a3cd-f34d563f62b8/volume", "rel": "bookmark"}]}, {"uuid": "f5889697-f191-495d-ac09-df1b9a546dcd", "created_at": "2025-11-11T18:57:56.565805+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": "12345", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/f5889697-f191-495d-ac09-df1b9a546dcd", "rel": "self"}, {"href": "http://localhost/nodes/f5889697-f191-495d-ac09-df1b9a546dcd", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f5889697-f191-495d-ac09-df1b9a546dcd/ports", "rel": "self"}, {"href": "http://localhost/nodes/f5889697-f191-495d-ac09-df1b9a546dcd/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f5889697-f191-495d-ac09-df1b9a546dcd/states", "rel": "self"}, {"href": "http://localhost/nodes/f5889697-f191-495d-ac09-df1b9a546dcd/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f5889697-f191-495d-ac09-df1b9a546dcd/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f5889697-f191-495d-ac09-df1b9a546dcd/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f5889697-f191-495d-ac09-df1b9a546dcd/volume", "rel": "self"}, {"href": "http://localhost/nodes/f5889697-f191-495d-ac09-df1b9a546dcd/volume", "rel": "bookmark"}]}, {"uuid": "e7a9ab50-7a77-4daf-b4c6-24cd696b54ae", "created_at": "2025-11-11T18:57:56.567629+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": "12345", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae", "rel": "self"}, {"href": "http://localhost/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae/ports", "rel": "self"}, {"href": "http://localhost/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae/states", "rel": "self"}, {"href": "http://localhost/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae/volume", "rel": "self"}, {"href": "http://localhost/nodes/e7a9ab50-7a77-4daf-b4c6-24cd696b54ae/volume", "rel": "bookmark"}]}, {"uuid": "284a3d53-befb-4fdb-b5e3-c2cc05cc7615", "created_at": "2025-11-11T18:57:56.569227+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": "12345", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615", "rel": "self"}, {"href": "http://localhost/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615/ports", "rel": "self"}, {"href": "http://localhost/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615/states", "rel": "self"}, {"href": "http://localhost/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615/volume", "rel": "self"}, {"href": "http://localhost/nodes/284a3d53-befb-4fdb-b5e3-c2cc05cc7615/volume", "rel": "bookmark"}]}, {"uuid": "3806d5a3-e26d-42d0-962e-039df6d39aca", "created_at": "2025-11-11T18:57:56.570723+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": "12345", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca", "rel": "self"}, {"href": "http://localhost/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca/ports", "rel": "self"}, {"href": "http://localhost/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca/states", "rel": "self"}, {"href": "http://localhost/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca/volume", "rel": "self"}, {"href": "http://localhost/nodes/3806d5a3-e26d-42d0-962e-039df6d39aca/volume", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_node_not_found [0.065245s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits/CUSTOM_1 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4c99a5b7-2548-492b-a1a2-3ad7cf60e990 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_invalid_ident [0.054379s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/123 123/ports WITH {} GOT Response: 400 Bad Request Content-Type: application/json {"error_message": "{\"code\": 400, \"title\": \"Bad Request\", \"description\": \"Expected UUID or name for portgroup: 123 123\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden_no_project [0.032486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-965d85bf-a55b-4633-93d6-eb839296842d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_if_trait_not_found [0.037849s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits/CUSTOM_12 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0787f8b3-535b-480a-8a1a-76d5477c7c9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 doesn't have a trait 'CUSTOM_12'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_query_false [0.043248s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-428e4f25-0a83-498a-8296-e92bb1601d4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} GET /v1/nodes?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2b35e08a-1df0-45b6-be3a-c96782d18176 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean [0.120113s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'clean', 'clean_steps': [{'step': 'upgrade_firmware', 'interface': 'deploy'}]} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-3f4c5ea5-a44f-466c-86f7-45a1aa88000a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_node_not_found [0.071308s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_snmpv3 [0.039003s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a666186-5662-46fa-bdca-4707579f7a3f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:56.696676+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"snmp_version": 3, "snmp_user": "test-user", "snmp_auth_protocol": "sha", "snmp_auth_key": "******", "snmp_priv_protocol": "aes", "snmp_priv_key": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_check_steps_fail [0.063263s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'clean', 'clean_steps': [{'step': 'upgrade_firmware', 'interface': 'deploy'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-78b03c3f-ec1c-41bd-8e4d-8e6516d1242f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"bad\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key [0.056659s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cf65ce01-4a67-4a3c-976d-4e8c68853a05 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "579b4a9a-095d-4e0a-9659-60745febaeba", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/579b4a9a-095d-4e0a-9659-60745febaeba", "rel": "self"}, {"href": "http://localhost/ports/579b4a9a-095d-4e0a-9659-60745febaeba", "rel": "bookmark"}]}, {"uuid": "68bd85f0-44f6-4cb6-90ae-da6acbed350e", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/68bd85f0-44f6-4cb6-90ae-da6acbed350e", "rel": "self"}, {"href": "http://localhost/ports/68bd85f0-44f6-4cb6-90ae-da6acbed350e", "rel": "bookmark"}]}, {"uuid": "c7b0ad9b-60cc-4d3a-bfec-2e6b92069d1e", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/c7b0ad9b-60cc-4d3a-bfec-2e6b92069d1e", "rel": "self"}, {"href": "http://localhost/ports/c7b0ad9b-60cc-4d3a-bfec-2e6b92069d1e", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_allowed [0.044795s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?sort_key=pxe_enabled WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c4a46c8b-2cfd-4ed6-b538-f17405d80617 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "66c276ee-d04a-49db-8afb-7aad4bc293ab", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/66c276ee-d04a-49db-8afb-7aad4bc293ab", "rel": "self"}, {"href": "http://localhost/ports/66c276ee-d04a-49db-8afb-7aad4bc293ab", "rel": "bookmark"}]}, {"uuid": "ebd46798-d6d5-4152-a4a7-2aaae8c9add3", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/ebd46798-d6d5-4152-a4a7-2aaae8c9add3", "rel": "self"}, {"href": "http://localhost/ports/ebd46798-d6d5-4152-a4a7-2aaae8c9add3", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk [0.046063s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'clean', 'clean_steps': [{'step': 'upgrade_firmware', 'interface': 'deploy'}], 'disable_ramdisk': True} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-c2eaff79-daa7-4882-a34f-2273f36a8f27 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.70 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_sort_key_allowed [0.091678s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?sort_key=resource_class WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-386c8311-0d78-4b39-b2e7-b2b358cd130f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": [{"uuid": "5a16a8d2-968c-4c80-a965-2700936a215d", "created_at": "2025-11-11T18:57:56.758510+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "rc_1", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/5a16a8d2-968c-4c80-a965-2700936a215d", "rel": "self"}, {"href": "http://localhost/nodes/5a16a8d2-968c-4c80-a965-2700936a215d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5a16a8d2-968c-4c80-a965-2700936a215d/ports", "rel": "self"}, {"href": "http://localhost/nodes/5a16a8d2-968c-4c80-a965-2700936a215d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5a16a8d2-968c-4c80-a965-2700936a215d/states", "rel": "self"}, {"href": "http://localhost/nodes/5a16a8d2-968c-4c80-a965-2700936a215d/states", "rel": "bookmark"}]}, {"uuid": "a7281440-161f-4f7e-b578-12c10323d29d", "created_at": "2025-11-11T18:57:56.756913+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "rc_2", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/a7281440-161f-4f7e-b578-12c10323d29d", "rel": "self"}, {"href": "http://localhost/nodes/a7281440-161f-4f7e-b578-12c10323d29d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a7281440-161f-4f7e-b578-12c10323d29d/ports", "rel": "self"}, {"href": "http://localhost/nodes/a7281440-161f-4f7e-b578-12c10323d29d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a7281440-161f-4f7e-b578-12c10323d29d/states", "rel": "self"}, {"href": "http://localhost/nodes/a7281440-161f-4f7e-b578-12c10323d29d/states", "rel": "bookmark"}]}, {"uuid": "d195ba6c-6ce4-4362-985a-fad0175be366", "created_at": "2025-11-11T18:57:56.754707+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_ state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "rc_3", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/d195ba6c-6ce4-4362-985a-fad0175be366", "rel": "self"}, {"href": "http://localhost/nodes/d195ba6c-6ce4-4362-985a-fad0175be366", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d195ba6c-6ce4-4362-985a-fad0175be366/ports", "rel": "self"}, {"href": "http://localhost/nodes/d195ba6c-6ce4-4362-985a-fad0175be366/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d195ba6c-6ce4-4362-985a-fad0175be366/states", "rel": "self"}, {"href": "http://localhost/nodes/d195ba6c-6ce4-4362-985a-fad0175be366/states", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_invalid [0.040410s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5d63212d-61aa-49d1-974d-afb6c5a52c58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/ports?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-affd2c8d-468e-4b9d-9cc9-a2203ea5d805 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/ports?sort_key=internal_info WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4888072c-bece-4dea-b204-e2aa54af5f42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value internal_info is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/ports?sort_key=local_link_connection WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4b4b3a03-31de-464c-bc68-7c054092bc4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value local_link_connection is an invalid field for sorting\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk_old_api [0.049862s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'clean', 'clean_steps': [{'step': 'upgrade_firmware', 'interface': 'deploy'}], 'disable_ramdisk': True} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e4f1d676-0d36-4622-8ac7-83d5e90820cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.69 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"disable_ramdisk is not acceptable in this API version\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_sort_key_not_allowed [0.060528s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?sort_key=resource_class WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-2304008d-1a68-4eda-b1ca-025951705178 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_not_allowed [0.034149s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?sort_key=pxe_enabled WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-c1816823-9f0f-4e54-90bb-9382745d3de5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.18 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_no_cleansteps [0.046441s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'clean'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-036bd0b5-d2a7-4bd7-9c98-484a6129f807 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"\\\"clean_steps\\\" is required when setting target provision state to clean\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_trait_fails_with_bad_version [0.314660s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT1 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cde5abaf-28ac-4238-b54c-5e9847304cd9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.36 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port [0.092445s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-c0e98b51-e1c0-4d5c-95bf-a9f43be11b21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b5d58f4e-0c72-4b8f-a590-f7714ea8772d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_already_exist [0.061595s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-5f256de3-524c-408f-b46e-260d19df4055 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A port with MAC address AA:AA:AA:11:22:33 already exists.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits [0.080633s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e85c7c38-e05b-4a7b-94b0-9685cb53fd5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"traits": ["CUSTOM_1", "CUSTOM_2"]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_bad_version [0.075037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-cfcd749c-eb26-4527-9555-5d60072a92c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.36 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_normalized [0.130800s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'AA:BB:CC:DD:EE:FF', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-e8359090-b1a0-4dbe-a7db-0ab30ae56821 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:57.118390+00:00", "updated_at": null, "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-77c4e7f1-0ac9-4995-bb8c-e23d78d0b7e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:57.118390+00:00", "updated_at": null, "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_node_not_found [0.070165s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/badname/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e76f6f93-f9d7-4384-b66d-7b96258ddfe3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node badname could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_with_runbooks [0.360357s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'clean', 'runbook': 'CUSTOM_1'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-73e498fc-ffd6-4f44-8ac3-42411a19dbc4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body [0.086898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'trait': 'CUSTOM_3'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-fa1bad28-3e89-4219-9a6a-e7a9498e75e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for body: Additional properties are not allowed ('trait' was unexpected)\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query [0.418854s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ad3852e8-5582-4f96-8738-e15f4a274784 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:57:57.247687+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_with_runbooks_unapproved [0.067818s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'clean', 'runbook': 'CUSTOM_1'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-19388ebe-0d48-4235-94c0-0c918ca8b060 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"This runbook has not been approved for use on this node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123. Please ask an administrator to add it to your node traits.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_doesnt_contain_id [0.158295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {'foo': 123}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-b7a3c1b5-8e68-453a-8316-d17aeafa6999 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:57.282409+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"foo": 123}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e52b392a-6ae5-4764-8113-02a5f8986543 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:57.282409+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"foo": 123}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_and_fields [0.063433s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e0b0bdbb-e8b0-486b-86b9-5c4031867215 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_no_add_single_trait_via_body_2 [0.094479s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits/CUSTOM_3 WITH {'traits': ['CUSTOM_3']} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bde7a49d-1b15-4b0a-bd66-033ddce64c5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A single node trait may be added via PUT /v1/nodes//traits/ with no body, or all node traits may be replaced via PUT /v1/nodes//traits with the list of traits specified in the request body.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_error [0.058156s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e00f8a27-f7eb-40cf-85a9-e3a7def24aa3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi [0.092612s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 204 No Content Openstack-Request-Id: req-4849d232-fd62-4b27-8b9b-2122540fffee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.29 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_false_and_fields [0.077292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?detail=False&fields=name WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-10128e59-e3bd-4bc6-b923-daad962ff48d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits [0.093522s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'traits': ['CUSTOM_3']} GOT Response: 204 No Content Openstack-Request-Id: req-24210cb6-2f44-43f6-945d-237a4baf6bb8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_allowed [0.059924s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6e20ff4d-a69f-426c-a181-54a98f8e4aac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_generate_uuid [0.098512s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/14790d6e-57cf-4d49-9024-d9540fc9e0e2 Openstack-Request-Id: req-eab66e03-ef85-4b5e-97f5-e21939f2e110 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "14790d6e-57cf-4d49-9024-d9540fc9e0e2", "created_at": "2025-11-11T18:57:57.462347+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/14790d6e-57cf-4d49-9024-d9540fc9e0e2", "rel": "self"}, {"href": "http://localhost/ports/14790d6e-57cf-4d49-9024-d9540fc9e0e2", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} GET /v1/ports/14790d6e-57cf-4d49-9024-d9540fc9e0e2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-95bdbc7f-b066-4800-90db-92b4d8ed5d05 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "14790d6e-57cf-4d49-9024-d9540fc9e0e2", "created_at": "2025-11-11T18:57:57.462347+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/14790d6e-57cf-4d49-9024-d9540fc9e0e2", "rel": "self"}, {"href": "http://localhost/ports/14790d6e-57cf-4d49-9024-d9540fc9e0e2", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_old_version [0.060981s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a8ba6576-fe2b-4283-84e2-f30d15977c1d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_addr_format [0.039783s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'invalid-format', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5e965ff2-820d-4438-aa68-c62141296072 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_supported [0.063423s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dbb9cc97-f536-4637-bba8-92c1914545d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.29 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support management (disabled or not implemented).\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_empty [0.088035s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'traits': []} GOT Response: 204 No Content Openstack-Request-Id: req-5a40ccec-25d1-43a0-8f08-f741c70b119e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_node_uuid_format [0.040477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': 'invalid-format', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f53bee0c-5719-4427-8a1d-5b43e119f588 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for node_uuid: invalid-format\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_association_filter [0.111532s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?associated=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-07a78014-cd3c-45a3-92ca-317a1524ee55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "50beeebf-ed36-4f82-9c24-3eecac2c40b3", "created_at": "2025-11-11T18:57:57.543627+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "39e44a27-3911-4754-9160-ff2cf65b4395", "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/50beeebf-ed36-4f82-9c24-3eecac2c40b3", "rel": "self"}, {"href": "http://localhost/nodes/50beeebf-ed36-4f82-9c24-3eecac2c40b3", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/50beeebf-ed36-4f82-9c24-3eecac2c40b3/ports", "rel": "self"}, {"href": "http://localhost/nodes/50beeebf-ed36-4f82-9c24-3eecac2c40b3/ports", "rel": "bookmark"}]}, {"uuid": "06ca5c57-b0cc-481d-a13a-e14698d19227", "created_at": "2025-11-11T18:57:57.556910+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "1580f813-fb00-4958-8108-34f54d29f46f", "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/06ca5c57-b0cc-481d-a13a-e14698d19227", "rel": "self"}, {"href": "http://localhost/nodes/06ca5c57-b0cc-481d-a13a-e14698d19227", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/06ca5c57-b0cc-481d-a13a-e14698d19227/ports", "rel": "self"}, {"href": "http://localhost/nodes/06ca5c57-b0cc-481d-a13a-e14698d19227/ports", "rel": "bookmark"}]}, {"uuid": "bba07111-385c-4f11-9c63-fa237641f105", "created_at": "2025-11-11T18:57:57.558834+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "4ef6134c-4171-45db-9279-4a2e33daf5c9", "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/bba07111-385c-4f11-9c63-fa237641f105", "rel": "self"}, {"href": "http://localhost/nodes/bba07111-385c-4f11-9c63-fa237641f105", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/bba07111-385c-4f11-9c63-fa237641f105/ports", "rel": "self"}, {"href": "http://localhost/nodes/bba07111-385c-4f11-9c63-fa237641f105/ports", "rel": "bookmark"}]}, {"uuid": "b8670532-ab55-473a-be27-2f9256599588", "created_at": "2025-11-11T18:57:57.560535+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "0d1bf167-567f-4d3e-b79c-0531aa79878a", "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "pro perties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/b8670532-ab55-473a-be27-2f9256599588", "rel": "self"}, {"href": "http://localhost/nodes/b8670532-ab55-473a-be27-2f9256599588", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b8670532-ab55-473a-be27-2f9256599588/ports", "rel": "self"}, {"href": "http://localhost/nodes/b8670532-ab55-473a-be27-2f9256599588/ports", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_empty_string [0.053865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': '', 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c8882011-4b79-4cc2-92a7-bba159f944f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A non-empty value is required when setting physical_network\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_accepted_after_1_41 [0.079210s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'abort'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-2ced0800-71cc-4bda-8fa8-bc117689bc74 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.41 {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_fails_with_bad_version [0.073129s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': []} GOT Response: 405 Method Not Allowed Allow: DELETE, GET, PATCH, POST Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_non_text [0.041771s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': 1234, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0b83557b-e218-4e66-aa29-c9dc6668a60e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 1234 is not of type 'string', 'null'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_with_instance_uuid [0.076913s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?instance_uuid=2a1e287d-93de-4406-95a0-041cd4b8ec54 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c64002b3-64af-4dae-99a4-573444254487 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "c7b588ec-a73d-4738-b5d3-173f1058ae2b", "created_at": "2025-11-11T18:57:57.648068+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "2a1e287d-93de-4406-95a0-041cd4b8ec54", "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/c7b588ec-a73d-4738-b5d3-173f1058ae2b", "rel": "self"}, {"href": "http://localhost/nodes/c7b588ec-a73d-4738-b5d3-173f1058ae2b", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/c7b588ec-a73d-4738-b5d3-173f1058ae2b/ports", "rel": "self"}, {"href": "http://localhost/nodes/c7b588ec-a73d-4738-b5d3-173f1058ae2b/ports", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_raises_before_1_41 [0.063322s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'abort'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-6e9755bd-8717-4997-aee0-f5c7a0ba428d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_bad_trait [0.073081s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'traits': ['CUSTOM_3', 'BAD_TRAIT']} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-be999d13-d3fd-4cb4-b14f-34fc2d97f50e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for body: 'BAD_TRAIT' is not valid under any of the given schemas. Possible root cause: 'BAD_TRAIT' does not match '^CUSTOM_[A-Z0-9_]+$'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_too_long [0.049834s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp', 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dde02a88-78e6-4d87-9c79-791cb7847811 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp' is too long\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_no_body [0.042805s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-99c2ead2-26bd-478c-bf9f-569d37adfe0a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A single node trait may be added via PUT /v1/nodes//traits/ with no body, or all node traits may be replaced via PUT /v1/nodes//traits with the list of traits specified in the request body.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_empty [0.071847s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bdf75a77-1ac3-4e16-a651-8b71d7e2095c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": []} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_already_in_progress [0.067349s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'manageable'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-55f4049a-3aec-4fee-ad14-79e204a0f4ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_rejects_too_long_trait [0.040617s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'traits': ['CUSTOM_3', 'CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT']} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-71ac7620-0832-4179-825e-7210653c3bac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for body: 'CUSTOM_TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT' is too long\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_missing_parameter_value [0.067922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'inspect'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-826b0a25-ba97-4912-885e-7728f1b08717 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.6 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Failed to validate inspection or power info.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields [0.078409s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=boot_interface,console_interface,deploy_interface,inspect_interface,management_interface,power_interface,raid_interface,vendor_interface WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-13c4013e-6128-4ed6-a2a0-f0301f831ad7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"boot_interface": null, "console_interface": null, "deploy_interface": null, "inspect_interface": null, "management_interface": null, "power_interface": null, "raid_interface": null, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_with_chassis [0.049323s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'traits': ['CUSTOM_3']} GOT Response: 204 No Content Openstack-Request-Id: req-a950d7a5-1933-4897-a5fa-fd02853a3e42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_keys [0.135202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet1/15', 'switch_info': 'value3'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-915630b3-92b6-46fd-b152-514abea87ae9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:57.823423+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet1/15", "switch_info": "value3"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortsCollection.test__get_ports_collection [0.021392s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_validation_failed_status_code [0.076580s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'inspect'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d9eeebfe-2f63-4e43-983c-6975ee6cf524 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.6 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Failed to validate inspection or power info.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_all_interface_fields_invalid_api_version [0.076510s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=boot_interface,console_interface,deploy_interface,inspect_interface,management_interface,power_interface,raid_interface,vendor_interface WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-060057d8-bcb4-49a1-afbb-c1c50f29840b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_multi [0.052379s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}, {'path': '/extra/foo3', 'value': 'bar3', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-746049da-7ef8-451e-ba70-7ad0f3dc78ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:57.880702+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_mandatory [0.090959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'switch_info': 'fooswitch'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3ae21bf8-1822-46cc-84b1-3cfc164f1356 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for local_link_connection: {'switch_id': '0a:1b:2c:3d:4e:5f', 'switch_info': 'fooswitch'} is not valid under any of the given schemas. Possible root cause: 'port_id' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_automated_clean_fields [0.056279s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=automated_clean WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8533ecba-efbf-4075-9507-3afbf050a72f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"automated_clean": true, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_id [0.067551s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/node_id', 'value': '1', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-38bb0c39-a3bc-4ddf-b993-257489c91251 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: address, extra, mode, name, node_uuid, properties, standalone_ports_supported\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_adoptfail [0.078682s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'manage'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-dccd8a61-61da-42ce-a41b-b4cecbb31ac4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.17 {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_optional [0.064689s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet1/15'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-94c0afee-e867-4b4f-b7db-a3965ac46d14 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:57.994826+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet1/15"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device [0.045571s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2ea225d4-4cf2-4053-aa23-600b93a5be51 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"boot_device": "pxe", "persistent": true} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_available [0.064213s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'manage'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-a0516bd5-86f2-45da-b11c-f1cf027dde23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.4 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device_by_name [0.038953s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/spam/management/boot_device WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0f800bbf-81f1-4f83-905a-0fdfa98f040e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"boot_device": "pxe", "persistent": true} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_switch_id_bad_mac [0.051606s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': 'zz:zz:zz:zz:zz:zz', 'port_id': 'Ethernet1/15', 'switch_info': 'value3'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-44617fdb-7dc0-495f-8d00-50a8d9317465 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a MAC address or OpenFlow datapath ID but received zz:zz:zz:zz:zz:zz.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_uuid [0.109348s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fb77415a-d056-44e6-bb61-f9c2cdffff13 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:58.030138+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_boot_device_iface_not_supported [0.041510s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a2b1a3b2-5899-49bb-b2e9-e7067815901c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support management (disabled or not implemented).\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_min_api_version [0.047036s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-9f0ae67b-9a64-4701-83f5-d82322e938fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:58.097609+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_change_when_being_cleaned [0.090170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power off'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3b58fa15-c10d-491a-aacf-a033ea1476ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"power off\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"cleaning\\\".\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power off'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0e782174-f711-47b8-8215-49337cdae4bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"power off\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"clean wait\\\".\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_custom_fields [0.045565s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=uuid,instance_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-295d737f-ead3-4f89-9a96-8a62d1b437ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "88dfe3d7-1e8b-4248-af59-92e440451f26", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/88dfe3d7-1e8b-4248-af59-92e440451f26", "rel": "self"}, {"href": "http://localhost/nodes/88dfe3d7-1e8b-4248-af59-92e440451f26", "rel": "bookmark"}]}, {"uuid": "8e332ef4-9e38-4f34-86c0-aee6698affd3", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/8e332ef4-9e38-4f34-86c0-aee6698affd3", "rel": "self"}, {"href": "http://localhost/nodes/8e332ef4-9e38-4f34-86c0-aee6698affd3", "rel": "bookmark"}]}, {"uuid": "37147b7b-626b-4ab4-b2cf-e9ebe55fc429", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/37147b7b-626b-4ab4-b2cf-e9ebe55fc429", "rel": "self"}, {"href": "http://localhost/nodes/37147b7b-626b-4ab4-b2cf-e9ebe55fc429", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_address [0.041145s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-227e58e4-7168-4a75-817b-053c4d28d4f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 'address' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_node_uuid [0.037379s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c90c5861-0a95-498d-9bfa-40de94dcfb1c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: 'node_uuid' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_invalid_state_request [0.055252s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'not-supported'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-fee9a577-d326-4106-b418-65ede1b38a94 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"not-supported\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"None\\\".\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_custom_fields_as_list [0.045624s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=uuid&fields=instance_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fb5ad48e-c3b3-42b9-85b6-7855b19a5a74 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "7b3acd4c-6bb7-4bd9-983f-b73aaf913f2b", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/7b3acd4c-6bb7-4bd9-983f-b73aaf913f2b", "rel": "self"}, {"href": "http://localhost/nodes/7b3acd4c-6bb7-4bd9-983f-b73aaf913f2b", "rel": "bookmark"}]}, {"uuid": "9d25b49c-8f5d-443d-94a7-0cb6e1987631", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/9d25b49c-8f5d-443d-94a7-0cb6e1987631", "rel": "self"}, {"href": "http://localhost/nodes/9d25b49c-8f5d-443d-94a7-0cb6e1987631", "rel": "bookmark"}]}, {"uuid": "a3086c07-e53d-4cd1-9b85-130512a71879", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/a3086c07-e53d-4cd1-9b85-130512a71879", "rel": "self"}, {"href": "http://localhost/nodes/a3086c07-e53d-4cd1-9b85-130512a71879", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root [0.108004s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d37b2bbc-2190-49a8-a50e-8abc6a3daff6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:58.144920+00:00", "updated_at": null, "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_node_uuid_not_found [0.051101s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8048a4b8-c084-45a5-bbe0-b7823c33a4e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_by_name [0.059792s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/states/power WITH {'target': 'power on'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/node-39/states Openstack-Request-Id: req-a405df75-60b7-4fac-926a-01c1125b841d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_fields_for_nova [0.063905s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=uuid,power_state,target_power_state,provision_state,target_provision_state,last_error,maintenance,instance_uuid,traits,resource_class WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-20d6109c-8a03-40a9-b1cb-d535e23f4ad4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "87d2ab45-3813-440c-90c6-f50ecf225992", "power_state": null, "target_power_state": null, "provision_state": "available", "target_provision_state": null, "last_error": null, "maintenance": false, "instance_uuid": "32d07c4e-2434-4a6c-92e4-ff0aec71c9fa", "traits": ["CUSTOM_RAID5", "CUSTOM_TRAIT1"], "resource_class": null, "links": [{"href": "http://localhost/v1/nodes/87d2ab45-3813-440c-90c6-f50ecf225992", "rel": "self"}, {"href": "http://localhost/nodes/87d2ab45-3813-440c-90c6-f50ecf225992", "rel": "bookmark"}]}, {"uuid": "f745cf93-1b33-4d35-922b-7195452d136a", "power_state": null, "target_power_state": null, "provision_state": "available", "target_provision_state": null, "last_error": null, "maintenance": false, "instance_uuid": "b0590e97-0a3b-400a-8127-3f0ece390501", "traits": ["CUSTOM_RAID5", "CUSTOM_TRAIT1"], "resource_class": null, "links": [{"href": "http://localhost/v1/nodes/f745cf93-1b33-4d35-922b-7195452d136a", "rel": "self"}, {"href": "http://localhost/nodes/f745cf93-1b33-4d35-922b-7195452d136a", "rel": "bookmark"}]}, {"uuid": "b2de8266-03e1-4755-b8ef-d31e9ab24410", "power_state": null, "target_power_state": null, "provision_state": "available", "target_provision_state": null, "last_error": null, "maintenance": false, "instance_uuid": "d8bef259-1ed6-4ba2-99f9-d38b36ba30e1", "traits": ["CUSTOM_RAID5", "CUSTOM_TRAIT1"], "resource_class": null, "links": [{"href": "http://localhost/v1/nodes/b2de8266-03e1-4755-b8ef-d31e9ab24410", "rel": "self"}, {"href": "http://localhost/nodes/b2de8266-03e1-4755-b8ef-d31e9ab24410", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root_non_existent [0.083221s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0689a14c-b77d-4032-a794-47edf917d235 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: address, extra, mode, name, node_uuid, properties, standalone_ports_supported\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_noportgroup [0.059742s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': False, 'physical_network': None, 'is_smartnic': False, 'name': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-fc8b2828-615b-40d9-9dd1-9cdf5babbfcf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:58.288815+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_by_name_unsupported [0.049188s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ebb26dee-b17a-4d03-89cc-dd5efeb14f04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node node-39 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_pagination_no_uuid [0.047435s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=name&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-33bcf674-5105-4a9f-b1db-7ed0a4561fad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"name": null, "links": [{"href": "http://localhost/v1/nodes/c4671d1c-b64d-4bb2-b004-10b7ac1c4ece", "rel": "self"}, {"href": "http://localhost/nodes/c4671d1c-b64d-4bb2-b004-10b7ac1c4ece", "rel": "bookmark"}]}, {"name": null, "links": [{"href": "http://localhost/v1/nodes/ca5767df-1a01-4e65-9dfa-41a4b6d9527e", "rel": "self"}, {"href": "http://localhost/nodes/ca5767df-1a01-4e65-9dfa-41a4b6d9527e", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=ca5767df-1a01-4e65-9dfa-41a4b6d9527e"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field [0.037112s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=conductor WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-703bf332-862d-472d-85a0-c435a9608e3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_invalid_soft_ver [0.063518s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on', 'timeout': 0} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d9fa9e32-ddef-4df7-9145-4e7ff780d0c2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"timeout has to be positive integer\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_address [0.107064s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/address', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-17a2f65a-08a2-41c6-889c-be62a2fcb390 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:58.339863+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field_invalid_api_version [0.040621s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=conductor WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-2ec20075-7c5c-4216-814e-3a2deeb55ff5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_no_ver [0.057231s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on', 'timeout': 0} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3f095973-06cc-45c2-9fd1-b9c63deacb38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"timeout has to be positive integer\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_group_fields [0.040833s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=conductor_group WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-15796622-f205-4270-b936-0ed60228fc98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"conductor_group": "", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_group_fields_invalid_api_version [0.035590s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=conductor_group WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-6d16d853-468e-49ca-965f-ef7c148f4269 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_mode_not_allowed [0.093007s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/mode', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3afedff3-32ba-4396-a844-ba0d5f8ad6bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"'mode' is a mandatory attribute and can not be removed\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_valid_soft_ver [0.075012s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on', 'timeout': 0} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b9476199-b6f8-4f12-b4af-e1ec5e0e6458 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"timeout has to be positive integer\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information [0.042064s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ed98ffc4-23f6-45dd-b330-4a9c69401865 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"console_enabled": true, "console_info": {"test": "test-data"}} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_nostandalone_ports [0.231068s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': False, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-c4fdb556-ad2f-4f0a-b75e-35a51189e56c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:58.518036+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_by_name [0.038477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/spam/states/console WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-435683a2-3a77-48ce-b43e-8417a85258e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"console_enabled": true, "console_info": {"test": "test-data"}} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_invalid_soft_ver [0.080738s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-3dba2f17-0e14-4817-b92f-6f1ba5484e6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_standalone_ports [0.063533s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': False, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-1f22f62f-2747-4af8-8022-13a1f050d234 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:58.581772+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_console_disabled [0.040100s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d64ef894-9381-4e57-9fee-31c45bd4dd90 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"console_enabled": false, "console_info": null} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_multi [0.138462s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/extra/foo1', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3d609265-98eb-4bb7-85ab-26d355a51b24 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:58.536339+00:00", "updated_at": "2025-11-11T18:57:58.553930+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo2": "bar2", "foo3": "bar3"}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f5bf142-4121-45be-9ff8-9f36d4b0f699 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:58.536339+00:00", "updated_at": "2025-11-11T18:57:58.553930+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_not_supported [0.038447s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c83a0a74-255b-41ec-9046-1744f2df7bc4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support console (disabled or not implemented).\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_noportgroup [0.065850s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-df5272a1-feca-4269-adbe-8d8ff992e9c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:58.650391+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_no_ver [0.084063s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-8b8bfd79-9ce4-4599-96c4-cecbb8ac97b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_node_id [0.054356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/node_id', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a821fe1e-9a17-4a39-90af-a3a8a242a66d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: address, extra, mode, name, node_uuid, properties, standalone_ports_supported\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_custom_fields_invalid_api_version [0.040584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=uuid,extra WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-4bab8845-3ded-4198-a78f-34a0af5a57ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_non_existent_property_fail [0.041856s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/extra/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0d30ff61-6578-4087-9575-6768ec33c7cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_custom_fields_invalid_fields [0.039749s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f4a19252-913d-4af8-b59d-479a112727aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field spongebob is not a valid field.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_valid_soft_ver [0.080735s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-7cbbda7f-17ff-4835-9e1e-14c5da4fb5c2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_uuid [0.043183s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-31517e9e-5dab-4730-adb7-c45c5dd8506e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: address, extra, mode, name, node_uuid, properties, standalone_ports_supported\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_description_field [0.041888s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=description WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be3c4fd0-61fb-4f09-b75f-22819096e4ee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.51 {"description": "useful piece", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_nostandalone_ports [0.133933s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-dd2f31f4-5892-4ea2-9814-8a4ecdb35397 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port group 6eb02b44-18a3-4659-8c0b-8d2802581ae4 doesn't support standalone ports. This port cannot be created as a member of that portgroup as the port's 'pxe_enabled' field was set to True.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_address_already_exist [0.046635s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/address', 'value': 'aa:aa:aa:aa:aa:aa', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-7bf6ed34-4f9c-4494-88d7-e12432f8dccf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A port with MAC address aa:aa:aa:aa:aa:aa already exists.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state [0.043041s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8f86dab0-7ae6-4c83-ae3b-d3bee48a980d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"state": "on"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_invalid_soft_ver [0.075825s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on', 'timeout': 2} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-9d9f21d5-48a7-4ec5-97b3-dc8e60111e18 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_multi [0.048094s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/extra/foo1', 'value': 'bar1x', 'op': 'replace'}, {'path': '/extra/foo2', 'value': 'bar2x', 'op': 'replace'}, {'path': '/extra/foo3', 'value': 'bar3x', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-56a7dad0-ee8f-4951-a16c-520f0ca137af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:58.831322+00:00", "updated_at": "2025-11-11T18:57:58.837912+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo1": "bar1x", "foo2": "bar2x", "foo3": "bar3x"}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state_iface_not_supported [0.040384s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f9b2ace2-49bf-4b9c-9d0d-ae14642995f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support management (disabled or not implemented).\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_standalone_ports [0.110610s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-c76e16d5-17a0-4bca-a5eb-beb41158bb4b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:58.894084+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_id [0.057452s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/node_id', 'value': '1', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7c55c640-6053-4a51-b6f6-eed3f5732b2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: address, extra, mode, name, node_uuid, properties, standalone_ports_supported\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_indicator_state_versioning [0.041179s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1bba9d5c-02a8-48a1-9ff9-969b340f8ca2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.63 {"state": "on"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_no_ver [0.087288s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on', 'timeout': 2} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e0594e62-f90c-49ce-9e14-ceb7bb8f7f69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup [0.062035s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-8df4f7f5-ce1b-43a0-bfb1-8fd38030747e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:58.956854+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_lessee_field [0.044427s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=lessee WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ddfb0cfc-300f-4859-8831-1eb509acb36c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"lessee": "some-lucky-project", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_different_nodes [0.052426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '42598fa4-5da3-4d8c-804f-14199dbbca9f', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d9d15e14-eb2c-49eb-b87c-2aea238b515c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 42598fa4-5da3-4d8c-804f-14199dbbca9f could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_uuid [0.107510s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aa81cbbe-fe43-418a-9e0e-5f381e670273 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:58.963220+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_network_interface_fields [0.084361s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=network_interface WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ec00d93c-6499-4b73-90c3-382d763f5bb9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"network_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_non_existent_node_uuid [0.047141s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a8f86c5a-2616-4277-b5a6-11d8ec40ad51 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_old_api_version [0.082563s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-0a4baf54-aa4e-400c-a7e3-b66d10098918 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_singular [0.051161s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-05ef4285-fc19-4306-be42-f0c69a610dc1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:59.099627+00:00", "updated_at": null, "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_network_interface_fields_invalid_api_version [0.075775s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=network_interface WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-6ab81922-f6d0-4c52-a15a-f67efb7aee03 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.19 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found [0.056468s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e9906d74-ce46-4355-8876-33a6f9ee9091 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_address_invalid_format [0.053878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/address', 'value': 'invalid-format', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9cef4217-4be1-4813-a71b-01b71871c256 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found_old_api_version [0.054733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-cae27350-4e67-4550-8fe5-a87c865a5eb4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor [0.092034s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor=rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f23c54c3-f65e-4734-8cf0-1d671a0fae9e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"nodes": []} GET /v1/nodes?conductor=fake.conductor WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e073724a-570b-46ef-b83f-ecfbc2a358ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"nodes": [{"uuid": "cf2ab59e-556b-4d39-9889-8e36d451409a", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/cf2ab59e-556b-4d39-9889-8e36d451409a", "rel": "self"}, {"href": "http://localhost/nodes/cf2ab59e-556b-4d39-9889-8e36d451409a", "rel": "bookmark"}]}, {"uuid": "d4899305-4875-404f-8c92-a79235328cdb", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/d4899305-4875-404f-8c92-a79235328cdb", "rel": "self"}, {"href": "http://localhost/nodes/d4899305-4875-404f-8c92-a79235328cdb", "rel": "bookmark"}]}]} GET /v1/nodes?conductor=fake.conductor WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a7769b6e-7a5b-4180-941d-45d8113c78a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"nodes": [{"uuid": "d4899305-4875-404f-8c92-a79235328cdb", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/d4899305-4875-404f-8c92-a79235328cdb", "rel": "self"}, {"href": "http://localhost/nodes/d4899305-4875-404f-8c92-a79235328cdb", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byaddress_not_allowed [0.037404s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/52:54:00:cf:2d:31 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json {"error_message": "{\"code\": 400, \"title\": \"Bad Request\", \"description\": \"Expected UUID or name for portgroup: 52:54:00:cf:2d:31\"}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid [0.047541s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e60d6f90-0310-4c37-ad47-435904e234c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:59.252976+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"foo": "bar"}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_valid_soft_ver [0.364478s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on', 'timeout': 2} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-84358dbd-b629-48d6-a865-18355637dcfb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid_invalid_api_version [0.035093s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_some_invalid_local_link_connection_key [0.103485s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': 'value1', 'port_id': 'Ethernet1/15', 'switch_foo': 'value3'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4eb9653a-11cb-457b-a1ce-ed506e45e8d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for local_link_connection: {'switch_id': 'value1', 'port_id': 'Ethernet1/15', 'switch_foo': 'value3'} is not valid under any of the given schemas. Possible root cause: Additional properties are not allowed ('switch_foo' was unexpected)\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_invalid_soft_ver [0.036452s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off', 'timeout': 0} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-8b4b5021-7f1f-4032-8ef2-fbb45624ad9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_group [0.132013s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor_group=group1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b4571c78-970c-46bf-a892-66ba0aa57920 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"nodes": [{"uuid": "a79894ac-387d-4742-ab2f-0ebaada791fe", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe", "rel": "self"}, {"href": "http://localhost/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe", "rel": "bookmark"}]}]} GET /v1/nodes?conductor_group=group2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-711df0d3-733e-46c6-96f5-009d490e2b36 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"nodes": [{"uuid": "a0688fe7-8e0b-48b2-8eb0-9650268b1880", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880", "rel": "self"}, {"href": "http://localhost/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880", "rel": "bookmark"}]}]} GET /v1/nodes/detail?conductor_group=group1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e07c9a26-3cdc-42a3-b4f8-f86cc67249b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"nodes": [{"uuid": "a79894ac-387d-4742-ab2f-0ebaada791fe", "created_at": "2025-11-11T18:57:59.274506+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "group1", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe", "rel": "self"}, {"href": "http://localhost/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe/ports", "rel": "self"}, {"href": "http://localhost/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe/states", "rel": "self"}, {"href": "http://localhost/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe/volume", "rel": "self"}, {"href": "http://localhost/nodes/a79894ac-387d-4742-ab2f-0ebaada791fe/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail?conductor_group=group2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4e2adfef-ea22-4c84-8 2f3-b37f9a74021b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"nodes": [{"uuid": "a0688fe7-8e0b-48b2-8eb0-9650268b1880", "created_at": "2025-11-11T18:57:59.276202+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "group2", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880", "rel": "self"}, {"href": "http://localhost/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880/ports", "rel": "self"}, {"href": "http://localhost/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880/states", "rel": "self"}, {"href": "http://localhost/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880/volume", "rel": "self"}, {"href": "http://localhost/nodes/a0688fe7-8e0b-48b2-8eb0-9650268b1880/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_no_ver [0.039517s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off', 'timeout': 0} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-65b8570b-7fa1-4650-b4c2-b7cf04571e12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname [0.057374s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/pg.1 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d5705da8-6010-4fd4-b700-971737179e7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:59.344291+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"foo": "bar"}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_valid_soft_ver [0.037281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off', 'timeout': 0} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b214ab85-7840-4ff6-970c-d2ee2f09f06a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"timeout has to be positive integer\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_group_not_allowed [0.063020s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor_group=group1 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e6d0113d-e882-4c97-9850-25b89db9860b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.46\", \"debuginfo\": null}"} GET /v1/nodes/detail?conductor_group=group1 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-01caaf67-3aa6-434b-b3d3-867fd2635c20 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.46\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_invalid_soft_ver [0.038448s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-5c2ef7cf-1a1e-4c87-ac3c-6e7e788281a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname_with_json [0.090384s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/pg.1.json WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9b64c84a-c3d0-4dff-b1f1-0ef19375d4b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:59.406029+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"foo": "bar"}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_valid_extra [0.151903s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-aa4da2a1-5422-4e49-92e9-87d434822feb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:59.433936+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-80cfa14c-94d3-4e7c-bf92-597aaa3bdc7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:59.433936+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_no_ver [0.044106s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-0beacbfe-2b35-4eaf-9491-b6b9e1e545de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_no_valid_host [0.055621s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor=like.shadows WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-07527018-31ed-482f-aa40-f4099e415fe1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"nodes": []} GET /v1/nodes?conductor=like.shadows WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68aab675-2adb-4708-97cd-31e04459f8d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"nodes": []} GET /v1/nodes?conductor=fake.conductor WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-8db5d41c-e413-4a76-b74b-3f71918b83f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Some unexpected thing happened\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_valid_soft_ver [0.038406s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-1bf10b28-52f3-4701-b162-d100c095a11a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_not_allowed [0.042287s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor=rocky.rocks WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-7775115b-3faf-4e0c-9c9b-2abfbf83bcd6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.49\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_invalid_soft_ver [0.037471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off', 'timeout': 2} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-96b3fa6f-17ef-4bea-b275-1b258e17c814 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_noportgroup [0.111484s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': False, 'physical_network': None, 'is_smartnic': False, 'name': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-f2ceef7e-c272-4a9c-b39a-bd1b58481165 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:59.575499+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_description [0.064775s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?description_contains=cat WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-baa8f5ce-679b-47aa-9b59-5baa76d50d83 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.51 {"nodes": [{"uuid": "8562db88-40cc-452b-b422-c1214d994afc", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/8562db88-40cc-452b-b422-c1214d994afc", "rel": "self"}, {"href": "http://localhost/nodes/8562db88-40cc-452b-b422-c1214d994afc", "rel": "bookmark"}]}]} GET /v1/nodes?description_contains=dog WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d81deabe-ea6d-47cf-afaf-440fd4699452 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.51 {"nodes": [{"uuid": "e12f0c8f-7ceb-4055-a690-71f20d264ea2", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/e12f0c8f-7ceb-4055-a690-71f20d264ea2", "rel": "self"}, {"href": "http://localhost/nodes/e12f0c8f-7ceb-4055-a690-71f20d264ea2", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_allowed [0.145558s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-16c57e72-3231-4642-9ade-4ad733cfd535 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:59.546876+00:00", "updated_at": null, "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_no_ver [0.063494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off', 'timeout': 2} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-2578f793-2c6e-43d0-bb3c-c1b0387ded07 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver [0.049511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?driver=ipmi WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-243ea3be-887d-4c17-82e5-8095d3fe7a5e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.16 {"nodes": [{"uuid": "dd055d34-2582-4c8d-9d44-6c7541c55544", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/dd055d34-2582-4c8d-9d44-6c7541c55544", "rel": "self"}, {"href": "http://localhost/nodes/dd055d34-2582-4c8d-9d44-6c7541c55544", "rel": "bookmark"}]}]} GET /v1/nodes?driver=fake-hardware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-54bb82ba-2b9d-4970-85a1-12814034941e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.16 {"nodes": [{"uuid": "3f41c7fa-4813-4017-ae13-1ac7780a093d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/3f41c7fa-4813-4017-ae13-1ac7780a093d", "rel": "self"}, {"href": "http://localhost/nodes/3f41c7fa-4813-4017-ae13-1ac7780a093d", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver_invalid_api_version [0.029564s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?driver=fake WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-ca4bd89f-8809-4980-a53f-404b128ee095 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.16\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_valid_soft_ver [0.083949s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'soft power off', 'timeout': 2} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-7b24c05b-fd66-4354-9b04-a1b33aac675e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_portgroup_standalone_ports [0.139397s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': False, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-87341f1a-0960-4bc8-af31-cbff708119f6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:59.705009+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provide_from_manage [0.097803s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'provide'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-a0fbd9a8-19df-47f5-9b0c-4e908131ce66 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.4 {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_noportgroup [0.112333s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-ffd87c80-b60c-4a14-9f59-e7f5294368ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:57:59.821146+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_already_in_progress [0.050600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-90755a08-2c28-4168-ad9b-578c54ddb96a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_in_inspecting_not_allowed [0.257373s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-1723f719-3c59-4c6b-90ef-71d6f741ccc4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.39 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update portgroup \\\"6eb02b44-18a3-4659-8c0b-8d2802581ae4\\\" on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"inspecting\\\".\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_already_in_state [0.042408s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-854d3b68-4219-417f-a935-ecd85b8f00cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"active\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"active\\\".\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_invalid_name [0.053094s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/pg.1 WITH [{'path': '/name', 'value': 'aa:bb_cc', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0ee1340a-9a58-4d00-a171-d209a44754ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup pg.1: Cannot change name to invalid name 'aa:bb_cc'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_nostandalone_ports [0.121271s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-b682a78d-276e-4836-8bd9-c10b053a1dc0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port group 6eb02b44-18a3-4659-8c0b-8d2802581ae4 doesn't support standalone ports. This port cannot be created as a member of that portgroup as the port's 'pxe_enabled' field was set to True.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_not_found [0.042287s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/2e89a59c-3d8b-4d06-9d60-b6c0966a16f0 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-45ac1ce3-ae89-4590-8019-4f8ab72fd06f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 2e89a59c-3d8b-4d06-9d60-b6c0966a16f0 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault [0.286601s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fault=power failure WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8f6613dc-486b-4d85-a0af-746c1fdbde39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"nodes": [{"uuid": "c74a7dc5-7ddf-45a7-9b90-aec118a396b7", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7", "rel": "self"}, {"href": "http://localhost/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7", "rel": "bookmark"}]}]} GET /v1/nodes?fault=clean failure WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5346b378-7131-4e94-a143-a25c9d4c2e47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"nodes": [{"uuid": "dd14ad94-3697-4c76-99e6-df6196165386", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/dd14ad94-3697-4c76-99e6-df6196165386", "rel": "self"}, {"href": "http://localhost/nodes/dd14ad94-3697-4c76-99e6-df6196165386", "rel": "bookmark"}]}]} GET /v1/nodes/detail?fault=power failure WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab27e5bf-8aaf-4989-aef4-325f4a723085 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"nodes": [{"uuid": "c74a7dc5-7ddf-45a7-9b90-aec118a396b7", "created_at": "2025-11-11T18:57:59.737253+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": "power failure", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7", "rel": "self"}, {"href": "http://localhost/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7/ports", "rel": "self"}, {"href": "http://localhost/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7/states", "rel": "self"}, {"href": "http://localhost/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7/volume", "rel": "self"}, {"href": "http://localhost/nodes/c74a7dc5-7ddf-45a7-9b90-aec118a396b7/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail?fault=clean failure WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22d6edaf-5f6f-4707-8a80-b0094ee150fa X-Openstack-Ironic-Api-Maximum-V ersion: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"nodes": [{"uuid": "dd14ad94-3697-4c76-99e6-df6196165386", "created_at": "2025-11-11T18:57:59.739180+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": "clean failure", "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/dd14ad94-3697-4c76-99e6-df6196165386", "rel": "self"}, {"href": "http://localhost/nodes/dd14ad94-3697-4c76-99e6-df6196165386", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/dd14ad94-3697-4c76-99e6-df6196165386/ports", "rel": "self"}, {"href": "http://localhost/nodes/dd14ad94-3697-4c76-99e6-df6196165386/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/dd14ad94-3697-4c76-99e6-df6196165386/states", "rel": "self"}, {"href": "http://localhost/nodes/dd14ad94-3697-4c76-99e6-df6196165386/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/dd14ad94-3697-4c76-99e6-df6196165386/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/dd14ad94-3697-4c76-99e6-df6196165386/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/dd14ad94-3697-4c76-99e6-df6196165386/volume", "rel": "self"}, {"href": "http://localhost/nodes/dd14ad94-3697-4c76-99e6-df6196165386/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_by_name [0.068825s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/states/provision WITH {'target': 'active'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/node-39/states Openstack-Request-Id: req-eaf676e6-8b0f-470f-a455-0939454cedc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault_not_allowed [0.030845s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fault=power failure WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-1c1b4ca4-ef15-45b7-a221-50b8d81c1c13 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.41 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.42\", \"debuginfo\": null}"} GET /v1/nodes/detail?fault=power failure WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-ca63f7d2-4243-42bf-8a7b-9317d0afc66c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.41 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.42\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_address_normalized [0.045285s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-361e5ed7-46d3-48a0-8b30-7ec902af1ab2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:57:59.992843+00:00", "updated_at": null, "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_internal_info_not_allowed [0.042732s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/internal_info', 'value': False, 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7e1592c4-12ba-4970-8821-39f381d300bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /internal_info. Only the following can be updated: address, extra, mode, name, node_uuid, properties, standalone_ports_supported\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_by_name_unsupported [0.090295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/states/provision WITH {'target': 'active'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-61e0482b-2a5a-4de1-97d9-cd994e733bb6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node node-39 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault_with_invalid_fault [0.068887s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fault=somefake WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-74142e9f-bd3f-4120-a404-df7e263f5ea3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unrecognized fault \\\"somefake\\\" is specified, allowed faults are ('power failure', 'clean failure', 'rescue abort failure', 'service failure')\", \"debuginfo\": null}"} GET /v1/nodes/detail?fault=somefake WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f1092aa1-cd85-4879-9d46-28fbb5970c03 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unrecognized fault \\\"somefake\\\" is specified, allowed faults are ('power failure', 'clean failure', 'rescue abort failure', 'service failure')\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_standalone_ports [0.137800s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-55871f84-e9dd-4591-a9e7-ce11c686817f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:00.073836+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties [0.048801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/mode', 'value': '802.3ad', 'op': 'add'}, {'path': '/properties/bond_param', 'value': '100', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f0d2ec0-8aa3-4abb-b6cb-20346db0390d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:00.084815+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "802.3ad", "name": "pg.1", "properties": {"bond_param": "100"}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_deploy [0.082687s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-47ebf208-cb61-404a-bb5b-5b4604d65b2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.73 {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties_bad_api_version [0.052737s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/mode', 'op': 'add', 'value': '802.3ad'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e773dfaa-f2b2-486b-95c1-0359d2b70495 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/properties/abc', 'op': 'add', 'value': 123}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-9bd6d4a8-7dc2-48dc-bd9b-158f5e7a377c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_driver [0.072328s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?driver=test WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7806b89e-728c-4e6c-863f-2a737008aae2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.16 {"nodes": []} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_hyphens_delimiter [0.073848s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52-54-00-cf-2d-31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8bfbb91f-c768-4f6c-9048-11044dcd5066 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: 52-54-00-cf-2d-31\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_invalid_state_request [0.045082s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'not-supported'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-60b64df8-7d4c-4202-bbc0-9fce998a0cef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"not-supported\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"available\\\".\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_provision_state [0.051882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?provision_state=test WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-52f1044d-c615-485e-808b-175b2e8c85c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.9 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Provision state \\\"test\\\" is not valid\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported [0.051554s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/standalone_ports_supported', 'value': False, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2c159996-fbb3-4b77-beb9-b0d1ae8c8c35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:00.188131+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": false, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_resource_class [0.033722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?resource_class=test WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0e405933-ba74-45df-89eb-20b957e41c60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": []} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_internal_field [0.086340s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'internal_info': {'a': 'b'}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dc5202c5-5c63-4e00-b24e-f652617e6e15 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for port: Additional properties are not allowed ('internal_info' was unexpected)\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_locked_with_correct_state [0.058701s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-d928b308-d3f7-446d-bfa5-35aadcc8dd34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node is locked by host , please retry after the current operation is completed.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported_bad_api_version [0.060716s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'path': '/standalone_ports_supported', 'value': False, 'op': 'replace'}] GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_resource_class_detail [0.045440s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?resource_class=test WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d9c34876-16bb-4024-abc9-cb2c613dae42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": []} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_bmc_address_as_none [0.034223s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': None, 'bmc_v6address': None, 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-72b8c7ef-0605-46dc-b8a9-f9aa89a60126 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "5873962b-beb2-4c9e-834d-90981c24166f"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_node_in_maintenance_fail [0.051412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3ae36cfb-84dd-4b9a-bba8-832d65e9d03f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The provisioning operation can't be performed on node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 because it's in maintenance mode.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_inspector_compatibility [0.033861s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'bmc_v6address': '2001:db8::42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-2af077df-e234-423f-b0c1-1b1e06dbefd5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e585342a-82d0-47e5-8b50-f0cdbbf75f6e"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_invalid_schema [0.033835s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'bmc_v6address': '2001:db8::42'}, 'test': 42} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7e4920a6-0350-48f0-beae-6fba1e29138c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for data: 'interfaces' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_empty_password [0.082830s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': ' '} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7c17fdab-e41e-4a6e-8d90-a14603609b7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A non-empty \\\"rescue_password\\\" is required when setting target provision state to rescue\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic [0.151486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'hostname': 'host1', 'port_id': 'rep0-0'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': True, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-1f7bc527-ab8a-4a0b-b568-966f341b6d96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:00.378830+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": true, "local_link_connection": {"hostname": "host1", "port_id": "rep0-0"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_new_api [0.038038s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'bmc_v6address': '2001:db8::42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-457f61af-cc43-4955-baf3-39ea1b3f83b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "728406ba-dbac-4ea8-b6a0-18b2d28ad9fa", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value"}, "links": [{"href": "http://localhost/v1/nodes/728406ba-dbac-4ea8-b6a0-18b2d28ad9fa", "rel": "self"}, {"href": "http://localhost/nodes/728406ba-dbac-4ea8-b6a0-18b2d28ad9fa", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "noop", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": null, "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee [0.151506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?lessee=project1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-620a5cac-74d8-45d4-b64c-16381b01e78a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"nodes": [{"uuid": "6ccc66ab-3373-4e03-9448-01bac22d9863", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863", "rel": "self"}, {"href": "http://localhost/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863", "rel": "bookmark"}]}]} GET /v1/nodes?lessee=project2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03d0dde2-3a6d-43ea-922c-04fe4cfcab6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"nodes": [{"uuid": "cb6416d4-fbb7-4c8b-ba74-5408b890d8f0", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0", "rel": "self"}, {"href": "http://localhost/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0", "rel": "bookmark"}]}]} GET /v1/nodes/detail?lessee=project1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bf98612f-46d5-40e4-b2e6-ddfe46a230b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"nodes": [{"uuid": "6ccc66ab-3373-4e03-9448-01bac22d9863", "created_at": "2025-11-11T18:58:00.355491+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": "project1", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863", "rel": "self"}, {"href": "http://localhost/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863/ports", "rel": "self"}, {"href": "http://localhost/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863/states", "rel": "self"}, {"href": "http://localhost/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/6ccc66ab-3373-4e03-9448-01bac22d9863/volume", "rel": "self"}, {"href": "http://localhost/nodes/6ccc66ab-3373-4e03- 9448-01bac22d9863/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail?lessee=project2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-13bda49f-a96f-45fc-b033-8a9a935809b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"nodes": [{"uuid": "cb6416d4-fbb7-4c8b-ba74-5408b890d8f0", "created_at": "2025-11-11T18:58:00.368175+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": "project2", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0", "rel": "self"}, {"href": "http://localhost/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0/ports", "rel": "self"}, {"href": "http://localhost/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0/states", "rel": "self"}, {"href": "http://localhost/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0/volume", "rel": "self"}, {"href": "http://localhost/nodes/cb6416d4-fbb7-4c8b-ba74-5408b890d8f0/volume", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_no_usable_lookup_data [0.036262s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'interfaces': [{'mac_address': 'meow'}]}, 'test': 42} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-01ea1a54-6602-4fd1-b3c1-91ae4f4ef1e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No lookup information provided\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee_not_allowed [0.034633s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?lessee=project1 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e890dcc4-c526-4d9e-916c-7f2a6e453fd0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.64 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.65\", \"debuginfo\": null}"} GET /v1/nodes/detail?lessee=project1 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-5d45c811-6aaf-4719-bb41-d5d2149f3a24 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.64 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.65\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_old_api_version [0.064481s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'bmc_v6address': '2001:db8::42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0b875b92-9812-432d-90f5-22efffd093a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"API version 1.84 or newer is required\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_default_value [0.136257s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-cca3a699-183e-4cbe-a990-88506ffe13c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:00.525505+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner [0.063291s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?owner=fred WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ff1bd74a-518b-4199-bd1a-d681e5ae9e96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"nodes": [{"uuid": "bd38e25b-1dc0-4951-bc99-0c77bb0faa46", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46", "rel": "self"}, {"href": "http://localhost/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46", "rel": "bookmark"}]}]} GET /v1/nodes?owner=bob WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-556e00a3-3f5a-4500-8b6a-8185fc5be517 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"nodes": [{"uuid": "5fde72b4-6d58-4664-bc00-7cceb7354e06", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06", "rel": "self"}, {"href": "http://localhost/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06", "rel": "bookmark"}]}]} GET /v1/nodes/detail?owner=fred WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-166bd457-0c5e-4faa-b209-a0a12b741061 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"nodes": [{"uuid": "bd38e25b-1dc0-4951-bc99-0c77bb0faa46", "created_at": "2025-11-11T18:58:00.515663+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": "fred", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46", "rel": "self"}, {"href": "http://localhost/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46/ports", "rel": "self"}, {"href": "http://localhost/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46/states", "rel": "self"}, {"href": "http://localhost/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46/volume", "rel": "self"}, {"href": "http://localhost/nodes/bd38e25b-1dc0-4951-bc99-0c77bb0faa46/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail?owner=bob WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-600a3960-cd59-4f82-8719-c7a01e523a51 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"nodes": [{"uuid": "5fde72b4-6d58-4664-bc00-7cceb7354e06", "created_at": "2025-11-11T18:58:00.517342+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": "bob", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06", "rel": "self"}, {"href": "http://localhost/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06/ports", "rel": "self"}, {"href": "http://localhost/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06/states", "rel": "self"}, {"href": "http://localhost/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06/volume", "rel": "self"}, {"href": "http://localhost/nodes/5fde72b4-6d58-4664-bc00-7cceb7354e06/volume", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_bmc_address_as_none [0.036634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': None, 'bmc_v6address': None, 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-7fc54dc0-80ab-466c-891a-4cc8dd56e823 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "192e13bb-8045-4abd-a997-b651933791aa"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_allowed_states [0.182248s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-c968c650-3ce0-4943-af86-971ede503678 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-4c136084-e5f8-419f-9850-b7f08dcf7b02 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-76577a32-dffb-47da-98d6-b6dc1532e285 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-9cd17fe6-3e4c-43f8-83e1-4dfc006cbe4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner_not_allowed [0.038073s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?owner=fred WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-fa82498d-809b-4cba-8776-b7fba3239928 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.50\", \"debuginfo\": null}"} GET /v1/nodes/detail?owner=fred WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-46ef23e2-a9de-4a2d-b696-185bc7e4ba44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.50\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_inspector_compatibility [0.037617s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'bmc_v6address': '2001:db8::42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-21c12f97-e779-4353-bf9e-2e2b257eb54f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "11e84625-46af-4c03-a315-07e06bbb6836"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_invalid_schema [0.035244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'bmc_v6address': '2001:db8::42'}, 'test': 42} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-de6fff91-8380-4410-bdfb-3ec3fa72f26b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for data: 'interfaces' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_provision_state [0.050642s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?provision_state=available WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0ef3e70a-7d6f-459c-9415-793b43824014 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.9 {"nodes": [{"uuid": "2103f146-3019-4758-8661-79e05c6ac5ae", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/2103f146-3019-4758-8661-79e05c6ac5ae", "rel": "self"}, {"href": "http://localhost/nodes/2103f146-3019-4758-8661-79e05c6ac5ae", "rel": "bookmark"}]}]} GET /v1/nodes?provision_state=deploying WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4fd116d7-b76b-404d-820c-497372fe325f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.9 {"nodes": [{"uuid": "ee5dd3dd-8528-4373-ade7-681f263ba099", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "deploying", "name": null, "links": [{"href": "http://localhost/v1/nodes/ee5dd3dd-8528-4373-ade7-681f263ba099", "rel": "self"}, {"href": "http://localhost/nodes/ee5dd3dd-8528-4373-ade7-681f263ba099", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_hostname [0.122438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_info': 'switch', 'switch_id': 'aa:bb:cc:dd:ee:ff', 'port_id': 'Gig0/1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': True, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6ae94bd8-6c1f-4f90-bc43-74bfe037339a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Smart NIC port must have port_id and hostname in local_link_connection\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_new_api [0.037850s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'bmc_v6address': '2001:db8::42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-97c6a8cc-398c-424d-9405-b61e8116142f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "47d7d173-dd6a-4729-a8c1-5e67be8f8915", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/47d7d173-dd6a-4729-a8c1-5e67be8f8915", "rel": "self"}, {"href": "http://localhost/nodes/47d7d173-dd6a-4729-a8c1-5e67be8f8915", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "noop", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": null, "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_provision_state_not_allowed [0.036230s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?provision_state=test WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-46ad2ad4-c431-42a9-9f56-8b629d153552 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.8 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_no_usable_lookup_data [0.036989s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'interfaces': [{'mac_address': 'meow'}]}, 'test': 42} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-51ca38ae-701f-498e-8b78-ede34487661c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No lookup information provided\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_disallowed_states [0.143801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-a7ac3416-41f5-4ddb-b9e0-c36ddf2fc980 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-bc6f9f54-aecb-43fb-b10b-6099330c87d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-703b15d5-cebe-4efe-9738-00ca1393bf90 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-375fcd2a-3408-4674-b1cb-47d74c83a4d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class [0.048484s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?resource_class=foo WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ea0388e6-18bb-40c7-a699-8d65b2188fb4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": [{"uuid": "9a51ae7a-66cd-4c1e-87f8-ef937dcefc0a", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/9a51ae7a-66cd-4c1e-87f8-ef937dcefc0a", "rel": "self"}, {"href": "http://localhost/nodes/9a51ae7a-66cd-4c1e-87f8-ef937dcefc0a", "rel": "bookmark"}]}]} GET /v1/nodes?resource_class=bar WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d41a099c-2cbb-4170-ac79-924f570e9151 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": [{"uuid": "5a5d9f8a-62c2-416d-a47b-cc548bf792fa", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/5a5d9f8a-62c2-416d-a47b-cc548bf792fa", "rel": "self"}, {"href": "http://localhost/nodes/5a5d9f8a-62c2-416d-a47b-cc548bf792fa", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_old_api_version [0.033563s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'bmc_v6address': '2001:db8::42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-816a4c2d-c175-4243-9a1b-abbf3ba1c23e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"API version 1.84 or newer is required\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_port_id [0.102542s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_info': 'switch', 'switch_id': 'aa:bb:cc:dd:ee:ff', 'hostname': 'host'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': True, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ee1a70b0-8619-451f-b3d4-62c3b6d814b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for local_link_connection: {'switch_info': 'switch', 'switch_id': 'aa:bb:cc:dd:ee:ff', 'hostname': 'host'} is not valid under any of the given schemas. Possible root cause: 'port_id' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_detail [0.050713s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?resource_class=foo WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5319a65e-f296-4897-9947-6d009479ca89 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": [{"uuid": "72cb72c6-c0e9-4111-af0a-31be7e3b7066", "created_at": "2025-11-11T18:58:00.770788+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "foo", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/72cb72c6-c0e9-4111-af0a-31be7e3b7066", "rel": "self"}, {"href": "http://localhost/nodes/72cb72c6-c0e9-4111-af0a-31be7e3b7066", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/72cb72c6-c0e9-4111-af0a-31be7e3b7066/ports", "rel": "self"}, {"href": "http://localhost/nodes/72cb72c6-c0e9-4111-af0a-31be7e3b7066/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/72cb72c6-c0e9-4111-af0a-31be7e3b7066/states", "rel": "self"}, {"href": "http://localhost/nodes/72cb72c6-c0e9-4111-af0a-31be7e3b7066/states", "rel": "bookmark"}]}]} GET /v1/nodes/detail?resource_class=bar WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8ee1e0d-4707-4cf3-9742-b3c9a724166d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": [{"uuid": "0607a147-2bbe-4651-b429-7c7969632f0e", "created_at": "2025-11-11T18:58:00.772516+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "bar", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/0607a147-2bbe-4651-b429-7c7969632f0e", "rel": "self"}, {"href": "http://localhost/nodes/0607a147-2bbe-4651-b429-7c7969632f0e", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/0607a147-2bbe-4651-b429-7c7969632f0e/ports", "rel": "self"}, {"href": "http://localhost/nodes/0607a147-2bbe-4651-b429-7c7969632f0e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0607a147-2bbe-4651-b429-7c7969632f0e/states", "rel": "self"}, {"href": "http://localhost/nodes/0607a147-2bbe-4651-b429-7c7969632f0e/states", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_bad_invalid_agent_status [0.048954s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_status': 'invalid_state', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7ce68f83-43f1-470d-9367-51a264e1a1bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Agent status is invalid. Valid states are start,end,error.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version [0.031463s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?resource_class=fake WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-71298207-a150-47b1-8309-c3f808240134 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.21\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_no_password [0.098963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6eed9927-efba-4406-b334-e7fd69481724 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A non-empty \\\"rescue_password\\\" is required when setting target provision state to rescue\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_old_api_version [0.057763s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': True, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-872502c1-b48d-4ea2-84cb-21802eb76657 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.52 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version_detail [0.033553s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?resource_class=fake WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-97b65107-3c7f-40d0-9316-6bb553f51dd6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.21\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_heartbeat_rejects_different_callback_url [0.070582s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url2'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f847e24f-79fa-473f-8c1a-29cb688af94a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Detected change in ramdisk provided \\\"callback_url\\\"\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_llc_old_api_version [0.052695s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet1/15'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-f883d54e-faf1-4320-9a38-eb714cc2e8ad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.14 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_traits_not_allowed [0.037417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?traits=CUSTOM_TRAIT_1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bfedabd6-6356-401f-b7c6-37ae72c3991e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: traits\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unexpected_rescue_password [0.079332s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'rescue_password': 'password'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6d18ae16-7b5a-4fc5-b605-38afafdb20bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"\\\"rescue_password\\\" is only valid when setting target provision state to rescue\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_traits_not_allowed_detail [0.030214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?traits=CUSTOM_TRAIT_1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8a9de9a2-c615-459c-8abe-d9838d1a7360 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: traits\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_heartbeat_rejects_file_url [0.065624s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'file:///path/to/the/wizzard'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-fa92a149-3624-40e0-8242-a0964503d36e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"An issue with the supplied \\\"callback_url\\\" has been detected.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_allowed_states [0.060471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-52d1a1e2-f1c1-43bd-ab58-5d7d5320e051 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-99dfc3ec-1c51-4396-a484-418ca3423416 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-1da0e74b-90c8-487a-a144-9fb082928ba3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one [0.042058s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e2144013-09e4-4171-8b9c-9a48b5aacbad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:00.967126+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_node_not_found [0.051534s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/cd6864f8-a263-442a-897f-a2f69e18e06d WITH {'callback_url': 'https://url'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-253a1203-7b18-49a5-8062-9c1b1dca0f7b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node cd6864f8-a263-442a-897f-a2f69e18e06d could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc [0.123295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'network_type': 'unmanaged'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-1523b305-fba1-4bc6-8069-aaf57a776c16 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:00.994131+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"network_type": "unmanaged"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_configdrive_dict [0.043386s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e217e34-b316-4def-942e-8ccb4dd0d35b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:01.015886+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_disallowed_states [0.082247s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-54bada12-1c1d-4b08-8573-c4693de5765d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-51cd3b93-3f73-43c3-9b6d-1099e1f57588 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-f2b14e59-269a-46eb-b480-cf47a1841cb5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-6fcbf6ea-8688-476a-a892-4d8e5f06cbc6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-ba06dc61-5711-442e-825b-ca3efdb90ccb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok [0.066688s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'x'} GOT Response: 202 Accepted Openstack-Request-Id: req-ff4624af-c8af-4cea-95ed-c9c09589eb08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields [0.044929s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=extra,instance_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8accb9f2-d23c-49d6-a633-8c5f8b3b00f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_cleansteps_not_clean [0.042504s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'provide', 'clean_steps': 'foo'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ae74bc72-c245-4598-bd33-ba30147e5418 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.4 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected types , for clean_steps: foo\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc_old_api_version [0.098376s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'network_type': 'unmanaged'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-ca222dba-1c8a-4c69-94e0-41bce517fcb3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.63 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields_as_list [0.042955s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=extra&fields=instance_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5db6d7cb-81e2-428b-a35b-49a14dcf148f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_status_and_status [0.065312s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_status': 'start', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} GOT Response: 202 Accepted Openstack-Request-Id: req-26a939f5-04e4-4b28-bf1b-c592b14cb317 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields_show_password [0.040510s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=driver_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d087bc39-7dff-46a2-a790-05f3e56767e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"driver_info": {"fake_password": "******"}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network [0.064391s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': 'physnet1', 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-7a561f01-4d19-4b26-98a1-7cc3c7d77627 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:01.163929+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": "physnet1", "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_configdrive_not_active [0.080129s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deleted', 'configdrive': 'foo'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e9702e85-7dc8-4a4b-862f-8d9fc3851c02 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"deleted\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"available\\\".\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_token [0.066857s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'http://url', 'agent_token': 'abcdef1'} GOT Response: 202 Accepted Openstack-Request-Id: req-ec53f36c-d562-441e-9b66-8da0a7c08112 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_deleted_chassis [0.049227s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-abd076a5-f795-481d-ad44-250b2d8ae8e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:01.202200+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_old_api_version [0.055607s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': 'physnet1', 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-58af488b-bc4e-4678-a842-23f8d01873a2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy [0.062190s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-896609a6-b789-45da-a9cf-154c9e2d160b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_verify_ca [0.072326s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_verify_ca': 'abcdef1'} GOT Response: 202 Accepted Openstack-Request-Id: req-687fc734-9997-4ae0-a0e5-c43d53baf0ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_upgrade [0.057554s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': 'physnet1', 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-4c984afb-281c-4317-9908-b6471d6e9b5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_after_deployfail [0.045720s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-8f3e6b08-ee64-4fe0-a805-132de073d73e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_double_json_in_name [0.060139s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/node.json.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4c51d299-886d-4151-b030-0fbe3fa8ae46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:01.266832+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": "node.json.json", "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_pxe_enabled_old_api_version [0.043054s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'pxe_enabled': False, 'physical_network': None, 'is_smartnic': False, 'name': None} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-b4ba4fa8-cfac-457b-8a0e-c54312a9636a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.14 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive [0.041606s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'configdrive': '\nw7FJYV8ywqx+wqnCpwPCoXHDisO6HMO2w4nDsBBJccOvXsKUMsO9OcOPCQLCnMKoPSFLwp\nDDhj7Ck8KqwprDpcKWw6XChsOMw5lSEcKUZcO0PUJiWcK4wq0owr4ye8Ozw67ClzXDmsO7\nUxvCpjnCkFQgw73Ch8Kaw5HCicKlXMOvUnDDvg5uwoFkwqDCl8KAEWwCbUQvw7I5JcKUw7\nVbKl3Di8O4LMKuwrHChMOBw5plaVJKci04w7fCgcOgVhkwwoLCgilxwqTCpDNCGzdNw5N6\nwpgAw6jDn8ODLBBlMGcawrEZwr3DiVPDtMKTwpcxwrpBwrrDtcOEw5YTw7MMwqnCsMKqwp\nPCkMK1wpTDssKfwrDCscOsEEDDo8OAw5DCqsKKGBRqwqPDqx7Cg8KkDcOkwoIuwo/CgcK0\nZcKNf3N7wqIYQcKgQDnCq8KFw6DCvMOwWAHChMO3w5xWb8O3wq7Dn8K4eXgWw742woUqw5\n/DvcK+ScKcX8KzwprCuD3DgcOsC8Oqwp0CwqB8TsOIHsKVwozCv8O+w4LCmE9GCMORw63D\nicOQw4ZFasOzw4Uvw7NSw6Qbw77DkBgkwo4COcOzOWLClRNQXcOHwojCrsOdHMKIw6nDuM\nORHMKeXMO8fcK0By7CiMKwHSXCoEQgfQhWwpMdSsO8LgHCjh87DQc= '} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-34aaf0d5-df31-404c-99d8-00c5103432d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_version [0.075208s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_version': '1.4.1', 'agent_token': 'meow'} GOT Response: 202 Accepted Openstack-Request-Id: req-58557c43-33c5-4ab3-bb31-73835cbe8944 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json [0.073919s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dcc798af-908f-40eb-b5a4-d01dc5876884 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:01.358020+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_node_uuid_to_node_id_mapping [0.067129s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-0701e989-a6cb-464c-9e6d-fe3a0dfa8dce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:01.389158+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_by_name [0.069066s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/test.1 WITH {'callback_url': 'https://url', 'agent_token': 'token'} GOT Response: 202 Accepted Openstack-Request-Id: req-21027783-416c-4c14-a347-997b1c9bf7d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_portgroups_subresource_post [0.058969s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'local_link_connection': {'switch_id': '0a:1b:2c:3d:4e:5f', 'port_id': 'Ethernet3/1', 'switch_info': 'switch1'}, 'pxe_enabled': True, 'physical_network': None, 'is_smartnic': False, 'name': None, 'portgroup_uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fa8a73cf-4a6d-4657-99b1-dd1d794d9adb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json_in_name [0.093422s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/node.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8c0cef13-482f-4575-9c6c-b58a0100974c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:01.443893+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": "node.json", "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_for_anaconda [0.078745s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': '', 'agent_token': 'x'} GOT Response: 202 Accepted Openstack-Request-Id: req-2581fcc0-2d47-464b-92c6-6b303ab312b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byaddress [0.074734s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/52:54:00:cf:2d:31 GOT Response: 400 Bad Request Content-Type: application/json {"error_message": "{\"code\": 400, \"title\": \"Bad Request\", \"description\": \"Expected UUID or name for portgroup: 52:54:00:cf:2d:31\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json_not_found [0.079280s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f142c848-6691-41b7-a7f5-1e6e7c0d1c37 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_with_json [0.076744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json WITH {'callback_url': 'https://url', 'agent_token': 'maybe some magic'} GOT Response: 202 Accepted Openstack-Request-Id: req-1b1585fe-2e6e-4b60-b4b2-aa49e3e115e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict [0.261682s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'configdrive': {'user_data': 'foo'}} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-86e69c0f-7bfb-4ce8-9d7b-c4e2480a8566 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.56 {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_verify_ca_error [0.039507s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5fe33921-c61c-4d18-9574-209f90f3ed42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.67 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field \\\"agent_verify_ca\\\" not recognised in this version\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byid [0.094992s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 204 No Content Openstack-Request-Id: req-e98966ff-1f03-43d7-a0f3-2be62a54562f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict_all_fields [0.042761s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'configdrive': {'user_data': {'serialize': 'me'}, 'meta_data': {'hostname': 'example.com'}, 'network_data': {'links': []}, 'vendor_data': {'foo': 'bar'}}} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-ef705c1b-2c78-4bc9-be10-5f40cf73de1c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_no_agent_secret [0.084829s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-887054f0-4df0-4338-83e1-43a4f626670d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.52 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:01.626477+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"agent_secret_token": "******"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_version_error [0.042805s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_version': '1.4.1'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-df658634-740f-4edb-a79c-009ef7fc46a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.35 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field \\\"agent_version\\\" not recognised\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_invalid_type [0.045929s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'configdrive': ['aabb']} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f1e688e6-7d32-476f-9eae-ab8ab3764398 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected types , , for configdrive: ['aabb']\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_agent_status_error [0.034479s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd', 'agent_status': 'wow', 'agent_status_message': 'much status'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bf02a69a-cb6a-48be-833d-ac035ec000e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.71 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fields \\\"agent_status\\\" and \\\"agent_status_message\\\" not recognised.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname [0.076267s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/pg.1 GOT Response: 204 No Content Openstack-Request-Id: req-fc08ef24-efe1-4dc8-83c8-ad8b29ec7afe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_version [0.026796s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/580443bd-8646-4460-b2c9-e217c1c13fb8 WITH {'callback_url': 'https://url'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-99279926-7102-4bba-a6b9-66874c72ca33 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_suffix [0.082652s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/test.1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-98d17a62-33fd-4dd3-8ad6-1e6c9222dec7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:01.708398+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": "test.1", "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_not_existed [0.055126s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/blah GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cf9a526a-0444-4a90-8c6d-a517c628ca5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup blah could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_not_base64 [0.094856s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'configdrive': '{"meta_data": '} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1c126128-f3c2-43cf-a4bd-e1fc48c9c7c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid configdrive format: it is neither a JSON, nor a URL, nor a base64 string\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_bad_invalid_agent_status [0.058560s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_status': 'invalid_state', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-47a4f202-9afe-42dc-98f6-94f9e12108c0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Agent status is invalid. Valid states are start,end,error.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_with_json [0.042978s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/pg.1.json GOT Response: 204 No Content Openstack-Request-Id: req-7e6c0768-cf76-4fc7-abf3-99e37a1c7d63 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_owner_fields [0.074317s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=owner WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2fde5ec5-43b2-4338-9b43-32ae38c1075f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"owner": "fred", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_url [0.055495s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'configdrive': 'http://example.com'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-c4ea9aed-f1a9-4552-9a7e-2434e096dbf7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_invalid_api_version [0.036920s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_heartbeat_rejects_different_callback_url [0.093343s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url2'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-683505f0-d847-4f22-bfb2-a76395314530 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Detected change in ramdisk provided \\\"callback_url\\\"\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_deploy_steps [0.052633s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'deploy_steps': [{'interface': 'bios', 'step': 'factory_reset', 'priority': 95, 'args': {}}]} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-1cb13a0c-72a9-46a2-aaae-361fe1d09d7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_node_locked [0.048032s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-79777269-395f-453d-8908-5709153595e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_protected_fields [0.095447s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=protected WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1f764d0c-6843-4335-8166-4898946e7356 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"protected": true, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_deploy_steps_fail [0.042336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'active', 'deploy_steps': [{'interface': 'bios', 'step': 'factory_reset'}]} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-b3f78f6b-01c6-43bd-8ef9-141a484521fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.69\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_heartbeat_rejects_file_url [0.068100s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'file:///path/to/the/wizzard'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-806705c8-7aa8-4445-a5da-5ac662a864ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"An issue with the supplied \\\"callback_url\\\" has been detected.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links [0.091063s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-49046ed0-27b7-439c-8d44-f8719015a896 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "961e6660-64de-42b9-803a-5b2f3632d8a3", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/961e6660-64de-42b9-803a-5b2f3632d8a3", "rel": "self"}, {"href": "http://localhost/portgroups/961e6660-64de-42b9-803a-5b2f3632d8a3", "rel": "bookmark"}]}, {"uuid": "c60fee4d-25ef-4ac2-bb29-f74a972ea17b", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/c60fee4d-25ef-4ac2-bb29-f74a972ea17b", "rel": "self"}, {"href": "http://localhost/portgroups/c60fee4d-25ef-4ac2-bb29-f74a972ea17b", "rel": "bookmark"}]}, {"uuid": "2ad2c69d-3ea2-4f09-b539-1b2088fcde75", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/2ad2c69d-3ea2-4f09-b539-1b2088fcde75", "rel": "self"}, {"href": "http://localhost/portgroups/2ad2c69d-3ea2-4f09-b539-1b2088fcde75", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=3&marker=2ad2c69d-3ea2-4f09-b539-1b2088fcde75"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_node_not_found [0.031005s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/16df061d-a963-41ef-b88d-7a0fdc82ff53 WITH {'callback_url': 'https://url'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6fcaa8de-de3a-4dfd-9f8f-72679c90ee96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 16df061d-a963-41ef-b88d-7a0fdc82ff53 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_retired_fields [0.087813s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=retired WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7d98e104-d1c0-44a6-9816-ab54e1372dba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"retired": true, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok [0.035166s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'x'} GOT Response: 202 Accepted Openstack-Request-Id: req-880e1ca1-86b9-451d-9402-8923bf22f956 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild [0.097171s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rebuild'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-d975e7da-5b66-45b3-a1a1-114337b52109 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_custom_fields [0.080932s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?fields=address,uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-42eb9c6e-fb72-47a9-9c02-baa966e94955 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "9de2f62b-4f95-4aae-99b7-ec86c6c976b1", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/portgroups/9de2f62b-4f95-4aae-99b7-ec86c6c976b1", "rel": "self"}, {"href": "http://localhost/portgroups/9de2f62b-4f95-4aae-99b7-ec86c6c976b1", "rel": "bookmark"}]}, {"uuid": "3a018ab6-50c6-4db0-946a-0beacd4523ba", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/portgroups/3a018ab6-50c6-4db0-946a-0beacd4523ba", "rel": "self"}, {"href": "http://localhost/portgroups/3a018ab6-50c6-4db0-946a-0beacd4523ba", "rel": "bookmark"}]}, {"uuid": "213866ce-98eb-42b3-a951-bc74c617bfad", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/portgroups/213866ce-98eb-42b3-a951-bc74c617bfad", "rel": "self"}, {"href": "http://localhost/portgroups/213866ce-98eb-42b3-a951-bc74c617bfad", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=address,uuid&limit=3&marker=213866ce-98eb-42b3-a951-bc74c617bfad"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_status_and_status [0.056149s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_status': 'start', 'agent_status_message': 'woof', 'agent_verify_ca': 'abcdef1'} GOT Response: 202 Accepted Openstack-Request-Id: req-f0fb9e5d-cf88-4a3c-80d3-84dd7648f28e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields [0.090667s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=storage_interface WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9963db3a-825d-4122-b33a-31921b0bf93c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"storage_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_configdrive [0.085733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rebuild', 'configdrive': 'foo'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-4c8c7f03-82a2-49fe-ae54-dcc85c09f312 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.35 {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_default_limit [0.053511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0cd47408-3a3c-400a-80f9-98fef37fd744 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "1b782217-da76-40e2-9c71-8e2518ee67e2", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/1b782217-da76-40e2-9c71-8e2518ee67e2", "rel": "self"}, {"href": "http://localhost/portgroups/1b782217-da76-40e2-9c71-8e2518ee67e2", "rel": "bookmark"}]}, {"uuid": "55185bba-d089-494d-abff-633fb5c8e611", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/55185bba-d089-494d-abff-633fb5c8e611", "rel": "self"}, {"href": "http://localhost/portgroups/55185bba-d089-494d-abff-633fb5c8e611", "rel": "bookmark"}]}, {"uuid": "b612f2d1-ba0b-467c-b0eb-db8522265eeb", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/b612f2d1-ba0b-467c-b0eb-db8522265eeb", "rel": "self"}, {"href": "http://localhost/portgroups/b612f2d1-ba0b-467c-b0eb-db8522265eeb", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=3&marker=b612f2d1-ba0b-467c-b0eb-db8522265eeb"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail [0.040116s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-90651d72-76e1-4f5d-b5e9-9dd9e332d208 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:02.151622+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_token [0.087356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'http://url', 'agent_token': 'abcdef1'} GOT Response: 202 Accepted Openstack-Request-Id: req-ee4608c5-eb9d-41bd-8e20-4edccd693fdc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_deploy_steps [0.049724s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rebuild', 'deploy_steps': [{'interface': 'bios', 'step': 'factory_reset', 'priority': 95, 'args': {}}]} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-cf770901-8baf-4944-9abf-edec690c28e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields_invalid_api_version [0.080350s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=storage_interface WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-131b3dc4-62f1-4d6e-a3fb-853cf52b67f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_against_single [0.036882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-27ad13f5-c272-4599-99d3-7ed3ab1c8228 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_unsupported_configdrive [0.040970s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rebuild', 'configdrive': 'foo'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-86881cbe-0a3f-424e-a179-ae5f9b10eef1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Adding a config drive is only supported when setting provision state to active\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_verify_ca [0.083072s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_verify_ca': 'abcdef1'} GOT Response: 202 Accepted Openstack-Request-Id: req-c6249007-1b7b-4bbc-bef6-69c0c987c73b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down [0.041240s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deleted'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-83416ec9-3581-49f6-83fd-336188c10822 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices [0.093164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-52b0470c-4e69-4aab-aec3-527006382973 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"supported_boot_devices": ["pxe"]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_version [0.041156s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_version': '1.4.1', 'agent_token': 'meow'} GOT Response: 202 Accepted Openstack-Request-Id: req-657b1990-8a18-49cb-bfea-2cce67494fdb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_in_progress_deploywait [0.042548s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deleted'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-2ff80f8d-6fb8-4106-af00-236ac839c24c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_by_name [0.041281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/test.1 WITH {'callback_url': 'https://url', 'agent_token': 'token'} GOT Response: 202 Accepted Openstack-Request-Id: req-11961f0f-59da-4690-9aff-cc5784437ede X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_by_name [0.071334s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/spam/management/boot_device/supported WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-50107935-e38d-4aa9-b1c1-636a7bdf099d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"supported_boot_devices": ["pxe"]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_for_anaconda [0.039150s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': '', 'agent_token': 'x'} GOT Response: 202 Accepted Openstack-Request-Id: req-35447317-134d-4860-9146-d02bbc0d06bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_undeploy [0.089459s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'undeploy'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-7f2a7f42-0bb8-49ed-bc5a-40f473eb04c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_with_json [0.039457s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123.json WITH {'callback_url': 'https://url', 'agent_token': 'maybe some magic'} GOT Response: 202 Accepted Openstack-Request-Id: req-2cf3e83a-16b4-4068-a9ab-b97856b99671 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices_iface_not_supported [0.079449s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c0b8af59-46cf-481e-a403-6db5440008b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support management (disabled or not implemented).\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid [0.091222s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'logical_disks': [{'size_gb': 100, 'raid_level': 1}]} GOT Response: 204 No Content Openstack-Request-Id: req-6efacd59-a72f-40e5-9450-081e4f818f7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_verify_ca_error [0.070901s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-96d1c192-5f3c-4f1f-a0d5-df78d772bc12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.67 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field \\\"agent_verify_ca\\\" not recognised in this version\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators [0.076280s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-58db86e3-ebcb-4aa1-a090-4f3a02341e77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"indicators": [{"name": "led@chassis", "component": "chassis", "readonly": true, "states": ["OFF", "ON"], "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@chassis", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@chassis", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_by_node_name_ok [0.305268s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2545592-d7ff-4c33-8657-cedadd331733 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:02.492988+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_invalid_api_version [0.030827s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_version_error [0.055560s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_version': '1.4.1'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-804b5a25-f6f5-4aa7-9a38-cafa8d740f5d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.35 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field \\\"agent_version\\\" not recognised\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_iface_not_supported [0.072511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'logical_disks': [{'size_gb': 100, 'raid_level': 1}]} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f072db57-5326-43a6-adea-6f8d56fb67cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver fake-hardware does not support raid (disabled or not implemented).\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query [0.039435s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b3867dc3-b3b4-498a-a477-8e59d232875c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:02.565131+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators_iface_not_supported [0.083140s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5676ce13-cfb4-43f7-be04-de3828244f88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support management (disabled or not implemented).\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_invalid_parameter_value [0.089042s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'logical_disks': [{'size_gb': 100, 'raid_level': 1}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c98b96c4-8fba-40d3-ab4b-e667623026cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"foo\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_indicators_versioning [0.077434s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9d7136fc-6ded-4a46-9a30-077801553814 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.63 {"indicators": [{"name": "led@chassis", "component": "chassis", "readonly": true, "states": ["OFF", "ON"], "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@chassis", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@chassis", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query_false [0.091084s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f2afba3-0410-4682-a2a0-78a4f4647b66 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} GET /v1/portgroups?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2276790c-e890-4183-b4f7-7cacedb10713 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_older_version [0.079989s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'logical_disks': [{'size_gb': 100, 'raid_level': 1}]} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-6d40c20b-0efc-4b62-86e0-61c8d581e85f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_traits_fields [0.074510s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c0e9c937-30e6-460d-88ef-4548f06e4183 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"traits": [], "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_allowed [0.081660s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail?sort_key=mode WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-feff2e22-4bc0-4c88-a2ee-b68b2d107832 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "2170e5d8-ff82-443b-bf57-bc657a8d7192", "created_at": "2025-11-11T18:58:02.739677+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "mode_1", "name": "portgroup1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/2170e5d8-ff82-443b-bf57-bc657a8d7192", "rel": "self"}, {"href": "http://localhost/portgroups/2170e5d8-ff82-443b-bf57-bc657a8d7192", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/2170e5d8-ff82-443b-bf57-bc657a8d7192/ports", "rel": "self"}, {"href": "http://localhost/portgroups/2170e5d8-ff82-443b-bf57-bc657a8d7192/ports", "rel": "bookmark"}]}, {"uuid": "ccafd09a-57a6-43d7-a962-8636385b2ca3", "created_at": "2025-11-11T18:58:02.736356+00:00", "updated_at": null, "address": "52:54:00:cf:2d:32", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "mode_2", "name": "portgroup2", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/ccafd09a-57a6-43d7-a962-8636385b2ca3", "rel": "self"}, {"href": "http://localhost/portgroups/ccafd09a-57a6-43d7-a962-8636385b2ca3", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/ccafd09a-57a6-43d7-a962-8636385b2ca3/ports", "rel": "self"}, {"href": "http://localhost/portgroups/ccafd09a-57a6-43d7-a962-8636385b2ca3/ports", "rel": "bookmark"}]}, {"uuid": "2c45ee58-f281-449f-997a-0ff040a9d0a0", "created_at": "2025-11-11T18:58:02.718540+00:00", "updated_at": null, "address": "52:54:00:cf:2d:33", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "mode_3", "name": "portgroup3", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/2c45ee58-f281-449f-997a-0ff040a9d0a0", "rel": "self"}, {"href": "http://localhost/portgroups/2c45ee58-f281-449f-997a-0ff040a9d0a0", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/2c45ee58-f281-449f-997a-0ff040a9d0a0/ports", "rel": "self"}, {"href": "http://localhost/portgroups/2c45ee58-f281-449f-997a-0ff040a9d0a0/ports", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_agent_status_error [0.208503s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {'callback_url': 'https://url', 'agent_token': 'meow', 'agent_verify_ca': 'abcd', 'agent_status': 'wow', 'agent_status_message': 'much status'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9ab7b13f-c08c-47db-b56b-108aae7ea4a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.71 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fields \\\"agent_status\\\" and \\\"agent_status_message\\\" not recognised.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_not_allowed [0.031722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail?sort_key=mode WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-faff2daf-ecbc-44d3-9018-55ae1ec0f6b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_api_version [0.035655s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/b2541f80-0fd9-4bac-87e6-658b97653534 WITH {'callback_url': 'https://url'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6812ea7e-fbcd-4c45-bd0c-9d7c9a7b198e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_rescue_raises_error_before_1_38 [0.080772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'rescue', 'rescue_password': 'password'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-b1459b77-b6af-406c-8f53-bd32fb767f60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_traits_fields_invalid_api_version [0.076704s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=traits WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-4066b3ad-83d1-4366-90ba-43dee18ab74b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.36 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_and_fields [0.036026s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e9b9f1b2-ab6e-4851-8ab5-dbf63452719a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_false_and_fields [0.035197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?detail=False&fields=internal_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e0e419da-2bc4-4e25-af9d-397cc38303ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"internal_info": {"bar": "buzz"}, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_max_version [0.052963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ca38badc-589c-48a3-9640-b8926c981b4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "portgroups": [{"href": "http://localhost/v1/portgroups/", "rel": "self"}, {"href": "http://localhost/portgroups/", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "lookup": [{"href": "http://localhost/v1/lookup/", "rel": "self"}, {"href": "http://localhost/lookup/", "rel": "bookmark"}], "heartbeat": [{"href": "http://localhost/v1/heartbeat/", "rel": "self"}, {"href": "http://localhost/heartbeat/", "rel": "bookmark"}], "conductors": [{"href": "http://localhost/v1/conductors/", "rel": "self"}, {"href": "http://localhost/conductors/", "rel": "bookmark"}], "allocations": [{"href": "http://localhost/v1/allocations/", "rel": "self"}, {"href": "http://localhost/allocations/", "rel": "bookmark"}], "events": [{"href": "http://localhost/v1/events/", "rel": "self"}, {"href": "http://localhost/events/", "rel": "bookmark"}], "deploy_templates": [{"href": "http://localhost/v1/deploy_templates/", "rel": "self"}, {"href": "http://localhost/deploy_templates/", "rel": "bookmark"}], "shards": [{"href": "http://localhost/v1/shards/", "rel": "self"}, {"href": "http://localhost/shards/", "rel": "bookmark"}], "runbooks": [{"href": "http://localhost/v1/runbooks/", "rel": "self"}, {"href": "http://localhost/runbooks/", "rel": "bookmark"}], "continue_inspection": [{"href": "http://localhost/v1/continue_inspection/", "rel": "self"}, {"href": "http://localhost/continue_inspection/", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_None [0.072079s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-239813c7-fdd3-4e3f-897b-f6a4d694ce97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid secure_boot None requested for node. Allowed secure_boot states are: True, False) \", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_old_version [0.034909s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bed67f35-d083-4b93-bcaf-2ffb4a214738 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid query parameter ?detail=True received.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_with_allocation [0.080940s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?fields=allocation_uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-939e9577-9c39-4218-8314-0d4c49311d98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.52 {"links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "allocation_uuid": "8cf0c698-9588-4296-8f1c-e2539eaeeb77"} {1} ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_microversion_headers [0.047603s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_empty [0.030771s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1df75bb7-5459-42b1-8f8c-9895a5a1e1eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": []} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_boo [0.071282s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'boo!'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-24ea9172-07f0-486b-b0bb-bec0a3164391 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid target: Unrecognized value 'boo!', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_min_version [0.033872s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-643a3914-70d1-4b0d-92c9-ecc18480fdb2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}} {1} ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_route_checks_version [0.025644s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3e59adf2-5714-418d-b2c7-e55ddc3b4634 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_name_ok [0.056549s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-efa7c959-a6cc-44ff-bf34-dd67ac6f7154 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "16d9f4bc-9b11-467c-abf1-fc368faa35ed", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/16d9f4bc-9b11-467c-abf1-fc368faa35ed", "rel": "self"}, {"href": "http://localhost/portgroups/16d9f4bc-9b11-467c-abf1-fc368faa35ed", "rel": "bookmark"}]}, {"uuid": "23f5df03-232c-4209-b66c-8988655e937a", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/23f5df03-232c-4209-b66c-8988655e937a", "rel": "self"}, {"href": "http://localhost/portgroups/23f5df03-232c-4209-b66c-8988655e937a", "rel": "bookmark"}]}, {"uuid": "f78dbcf0-1128-4692-a0b7-c370b54b5079", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/f78dbcf0-1128-4692-a0b7-c370b54b5079", "rel": "self"}, {"href": "http://localhost/portgroups/f78dbcf0-1128-4692-a0b7-c370b54b5079", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_clean_step [0.096754s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-890674fe-98eb-4e20-a8bb-d6788d5692f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:02.952436+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-604c4f8d-c652-4abb-b7f0-a2254801334c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.7 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:02.952436+00:00", "updated_at": null, "clean_step": {"foo": "bar"}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_uuid_ok [0.035939s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail?node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-73467373-e93d-4f1b-9a48-9fbc8a98d9aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:03.004800+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_nullstr [0.079742s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': ''} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e26deefb-c5ac-4ed2-9ebb-71d8e08050a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid target: Unrecognized value '', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create [0.070377s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'c0b8959c-5ea5-48c3-933f-1c49a7df1020', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/c0b8959c-5ea5-48c3-933f-1c49a7df1020 Openstack-Request-Id: req-8cedbbc1-cf99-40b5-8dea-9d715ce4218a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c0b8959c-5ea5-48c3-933f-1c49a7df1020", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/c0b8959c-5ea5-48c3-933f-1c49a7df1020", "rel": "self"}, {"href": "http://localhost/runbooks/c0b8959c-5ea5-48c3-933f-1c49a7df1020", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/c0b8959c-5ea5-48c3-933f-1c49a7df1020 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a4887dc1-376b-43c2-b6c9-840fd2244655 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c0b8959c-5ea5-48c3-933f-1c49a7df1020", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/c0b8959c-5ea5-48c3-933f-1c49a7df1020", "rel": "self"}, {"href": "http://localhost/runbooks/c0b8959c-5ea5-48c3-933f-1c49a7df1020", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_ports_by_portgroup_uuid [0.050840s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2ec64b9a-c024-439b-9842-b5f673125730 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_description [0.086627s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6fb5f185-beec-445b-b759-0c06136c5ab8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.036748+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b358ede0-8675-46d8-9d5c-5abc29f3b01b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.51 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.036748+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": "useful piece", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_older_soft_ver [0.073647s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': False} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b1721292-180c-4b21-b2ab-1758f9d664e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"This endpoint is supported starting with the API version 1.76\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_custom_fields [0.043376s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7aeb65a0-bf48-489c-ac94-be29bcd2497b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "78d08bde-d21e-4829-98a9-c4056b1c76d6", "extra": {}, "links": [{"href": "http://localhost/v1/portgroups/78d08bde-d21e-4829-98a9-c4056b1c76d6", "rel": "self"}, {"href": "http://localhost/portgroups/78d08bde-d21e-4829-98a9-c4056b1c76d6", "rel": "bookmark"}]}, {"uuid": "af5ddf16-2f64-4475-bf06-bb1a1d817a90", "extra": {}, "links": [{"href": "http://localhost/v1/portgroups/af5ddf16-2f64-4475-bf06-bb1a1d817a90", "rel": "self"}, {"href": "http://localhost/portgroups/af5ddf16-2f64-4475-bf06-bb1a1d817a90", "rel": "bookmark"}]}, {"uuid": "5612bfa0-10d3-4eda-b80a-03d85cad5a3d", "extra": {}, "links": [{"href": "http://localhost/v1/portgroups/5612bfa0-10d3-4eda-b80a-03d85cad5a3d", "rel": "self"}, {"href": "http://localhost/portgroups/5612bfa0-10d3-4eda-b80a-03d85cad5a3d", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_complex_step_args [0.082485s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '37c2db62-2914-4519-8b61-352b4e34a47a', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': [{'bar': 'baz'}]}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/37c2db62-2914-4519-8b61-352b4e34a47a Openstack-Request-Id: req-9d2e5591-2b4b-4860-9664-e006bae0fbed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "37c2db62-2914-4519-8b61-352b4e34a47a", "created_at": "2025-11-11T18:58:03.128079+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/37c2db62-2914-4519-8b61-352b4e34a47a", "rel": "self"}, {"href": "http://localhost/runbooks/37c2db62-2914-4519-8b61-352b4e34a47a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"foo": [{"bar": "baz"}]}, "order": 1}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_pagination_no_uuid [0.050366s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?fields=address&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-179229fa-92dc-4e33-8122-32e48c8dd8d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/portgroups/566d8b49-92be-40c4-9408-8086f33ca0e4", "rel": "self"}, {"href": "http://localhost/portgroups/566d8b49-92be-40c4-9408-8086f33ca0e4", "rel": "bookmark"}]}, {"address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/portgroups/4d1d55a2-b666-451c-b784-b30d54b251f3", "rel": "self"}, {"href": "http://localhost/portgroups/4d1d55a2-b666-451c-b784-b30d54b251f3", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=address&limit=2&marker=4d1d55a2-b666-451c-b784-b30d54b251f3"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_soft_ver [0.075448s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': False} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-efe8f4a8-b968-432c-a09b-1fb4b07db301 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_properties_field_lower_api_version [0.066108s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/?fields=address,properties WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-1b47280f-83c3-4d7a-8639-76c594788691 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_doesnt_contain_id [0.090910s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '23be26f3-8cd3-4566-975d-c9ee2564030d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/23be26f3-8cd3-4566-975d-c9ee2564030d Openstack-Request-Id: req-6f8372e2-907c-470e-8c68-d2af504839de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "23be26f3-8cd3-4566-975d-c9ee2564030d", "created_at": "2025-11-11T18:58:03.212572+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/23be26f3-8cd3-4566-975d-c9ee2564030d", "rel": "self"}, {"href": "http://localhost/runbooks/23be26f3-8cd3-4566-975d-c9ee2564030d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/23be26f3-8cd3-4566-975d-c9ee2564030d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c237bd68-2dcb-40af-bad3-5b51cab2f48c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "23be26f3-8cd3-4566-975d-c9ee2564030d", "created_at": "2025-11-11T18:58:03.212572+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/23be26f3-8cd3-4566-975d-c9ee2564030d", "rel": "self"}, {"href": "http://localhost/runbooks/23be26f3-8cd3-4566-975d-c9ee2564030d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_undocumented_request_zero [0.079132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 0} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-6979356c-32a0-4929-bb85-d7242925c6b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_custom_fields_invalid_fields [0.056149s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a4976d67-72d1-4307-bb12-66e354d5602e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_error [0.076568s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'd3116777-ef0a-400f-b180-838ea75f6124', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-0045eea4-4630-4c22-a964-b7f584677676 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one [0.040107s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e7fb8a1-fd60-4e50-ba1a-bd8ad4a1af57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:03.309041+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_invalid_request_two [0.072961s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 2} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-290e5533-e9aa-4559-9a1c-044d4e24ce71 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid target: Unrecognized value '2', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_custom_fields [0.041618s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4?fields=address,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-57eb403f-f348-4620-bba7-d579cbe4ecb7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"address": "52:54:00:cf:2d:31", "extra": {}, "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_invalid_api_version [0.031376s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_generate_uuid [0.099463s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/157ab4c6-1a0a-47b4-9f55-af5371cddb15 Openstack-Request-Id: req-0bcd2f05-9d2b-4ab0-9b5d-d101fbd0b23a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "157ab4c6-1a0a-47b4-9f55-af5371cddb15", "created_at": "2025-11-11T18:58:03.397316+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/157ab4c6-1a0a-47b4-9f55-af5371cddb15", "rel": "self"}, {"href": "http://localhost/runbooks/157ab4c6-1a0a-47b4-9f55-af5371cddb15", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/157ab4c6-1a0a-47b4-9f55-af5371cddb15 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c9c8fbf5-9f41-47af-9467-e84974244be0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "157ab4c6-1a0a-47b4-9f55-af5371cddb15", "created_at": "2025-11-11T18:58:03.397316+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/157ab4c6-1a0a-47b4-9f55-af5371cddb15", "rel": "self"}, {"href": "http://localhost/runbooks/157ab4c6-1a0a-47b4-9f55-af5371cddb15", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} None {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_older_soft_ver [0.076945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-df4ec689-b902-42bd-bfdf-e4705812272d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"This endpoint is supported starting with the API version 1.76\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_mode_field_lower_api_version [0.040374s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4?fields=address,mode WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-862f3e66-34e2-4ebd-86a7-95cbe4bfde49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_api_version [0.040409s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'd8ce45a9-77db-4f80-931e-886a967e0586', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow runbooks\"}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_empty_steps [0.035594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '12916f1d-ae02-4634-85c5-ff036adf6524', 'steps': [], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5bacfbf7-2903-48fc-96a4-128c6fbdcb23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: [] is too short\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_driver_internal [0.417063s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ff6fd346-e450-45ca-995a-61da1a595982 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.129914+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b5ac9bd-798a-488f-8bb5-d267994dab94 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.3 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.129914+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"foo": "bar"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_double_json_in_name [0.060700s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c69a0107-d54c-43af-9414-0ab0231669f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:03.465817+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.json.json", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_soft_ver [0.085733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': True} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-bb72a831-f205-42e2-9eef-aedec365c405 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_extra [0.042236s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '45d501bd-4ba0-4302-8545-112d1fb4521b', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': 1, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2aa8f968-e6da-4143-99f6-7a0f8a7f619e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 1 is not of type 'object', 'null'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json [0.083040s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-24ae46af-4b0d-44da-ac37-7a08fb070fe5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:03.546583+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_undocumented_request_one [0.076652s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 1} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-a8436e49-100e-4113-8688-fb859b71f7db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_inspection [0.093704s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dac6f76c-757c-456c-bed3-617b148f9328 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.550668+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c556d85e-e3d4-48aa-b671-be52010c790b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.6 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.550668+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": "2015-03-18T19:20:00+00:00", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_foo [0.116105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'c1183ce0-d00f-44be-b942-479920aadebd', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None, 'foo': 'bar'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-778f22ef-368f-4b4d-bd65-c86ec2467913 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: Additional properties are not allowed ('foo' was unexpected)\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_interface_fields [0.080631s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f32894ff-dff0-41f0-a82a-a9442030e43c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.644557+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}]}]} GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-94937e99-c947-4359-b81e-76a321f83a6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.31 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.644557+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json_in_name [0.103548s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b1a3ee27-04f3-4a38-a243-3481f61243a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:03.638765+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.json", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_name [0.040383s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fa6e23d2-18aa-4ff8-81d3-c0a286accb52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.4 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.696238+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-05080008-b5cc-425d-8075-e099e8452bdb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.696238+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": "fish", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_name [0.060941s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 1, 'uuid': '81b93100-5665-4ca7-be94-6e0ba54f94c9', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b298ee26-32f0-41b1-b1ec-0865f2802b82 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 1 is not of type 'string'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_service [0.136291s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'service', 'service_steps': [{'interface': 'deploy', 'step': 'meow'}]} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-440cd1af-6ec5-4876-bb1b-8b873462da96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.87 Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_network_interface [0.043051s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-78cb7fd9-eff2-4b9a-97cc-43d9173b27cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.19 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.738253+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]}]} GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e07f511c-3d24-43fb-bbf6-bcf4b9ef5a68 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.738253+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": "flat", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_resource_class [0.040471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cc848276-79ef-4682-8fc7-3f96c7d4a9f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.780303+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]}]} GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab68e0a2-08c2-4d27-90ba-cfd965beb6a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.780303+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": "foo", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_name_none [0.071306s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': None, 'uuid': 'cdb6222a-9ce2-4296-aeec-84216e422726', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6e881950-5d4f-4295-bbbf-237ccfcaa3d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: None is not of type 'string'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json_not_found [0.112966s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4.json WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d8049b65-f1e6-4915-b27b-dcbeade146b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4.json could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_service_args_required [0.099887s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'service'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-927f3329-e2ef-4e54-88ed-ef0268422b5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.87 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"\\\"service_steps\\\" is required when setting target provision state to service\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_storage_interface [0.043493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-42047a87-aba5-4f8a-a299-189c356dd7a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.823095+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3202a344-11f0-4938-bcfe-f103d2254afe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.823095+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "storage_interface": "cinder", "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uui d": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_steps [0.079261s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '630add4f-98eb-415a-a692-f61f4d5b912c', 'steps': {}, 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6f7867c7-a2fb-4294-adf5-129c63b02038 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: {} is not of type 'array'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_service_with_runbooks [0.054629s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'service', 'runbook': 'CUSTOM_1'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-c42946f7-0bbe-4046-84d5-a78a9e07dbf7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 Captured stderr: ~~~~~~~~~~~~~~~~ /usr/lib/python3.9/site-packages/jsonschema/validators.py:1104: DeprecationWarning: The metaschema specified by $schema was not found. Using the latest draft to validate, but this will raise an error in the future. cls = validator_for(schema) {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_traits [0.047247s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8505243-638f-469a-9489-1a38d8806b4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.36 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.866346+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0e17eab1-7cb3-48f4-a97c-705b0c956966 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.866346+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["CUSTOM_1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c 02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_suffix [0.102930s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d1f0f6a4-2549-468d-9aae-426440cdc075 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:03.879362+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "pg.1", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_volume [0.039964s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7cdce752-7c65-4c35-8426-b419b0d32422 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.31 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.912698+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7d0f3571-8c96-4054-9a87-201b1fc9bb0b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:03.912698+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "b ookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_service_with_runbooks_unapproved [0.052724s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'service', 'runbook': 'CUSTOM_1'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-be114eaa-7488-44f0-bf34-2a77cc50c643 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"This runbook has not been approved for use on this node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123. Please ask an administrator to add it to your node traits.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_args1 [0.067014s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '7ec168cd-4931-4371-9d97-ea6df730ba3d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': 'not a dict', 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5061ac86-87cc-430b-841f-e400b3e6c4ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'not a dict' is not of type 'object'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links [0.056603s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2fe81b5d-ce42-4b8d-84bc-2f97f7198be6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "9dbaf029-11a1-4002-8392-39571c8f31ac", "created_at": "2025-11-11T18:58:03.955533+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac", "rel": "self"}, {"href": "http://localhost/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac/ports", "rel": "self"}, {"href": "http://localhost/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac/ports", "rel": "bookmark"}]} GET /v1/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a47bf4c8-90ad-4aa1-8928-5519410459e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "9dbaf029-11a1-4002-8392-39571c8f31ac", "created_at": "2025-11-11T18:58:03.955533+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac", "rel": "self"}, {"href": "http://localhost/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac/ports", "rel": "self"}, {"href": "http://localhost/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac/ports", "rel": "bookmark"}]} GET /nodes/9dbaf029-11a1-4002-8392-39571c8f31ac WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e1a14db4-d72c-4c8a-8abf-8c2f5ac1fa8b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "9dbaf029-11a1-4002-8392-39571c8f31ac", "created_at": "2025-11-11T18:58:03.955533+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac", "rel": "self"}, {"href": "http://localhost/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac/ports", "rel": "self"}, {"href": "http://localhost/nodes/9dbaf029-11a1-4002-8392-39571c8f31ac/ports", "rel ": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device [0.047399s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 204 No Content Openstack-Request-Id: req-47f36a69-c18a-48b5-9dd5-a96e4b86a8a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_args2 [0.077454s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '753d9593-0f68-4c8c-89ae-ca1922442041', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': [], 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-222d7821-9359-4b69-9ab4-097d3f1907a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: [] is not of type 'object'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links_public_url [0.047977s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/30e0e997-6642-40e0-94b4-106949ec1185 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b68f7731-a4f7-4cae-a4e5-2cbb5e8ba2b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "30e0e997-6642-40e0-94b4-106949ec1185", "created_at": "2025-11-11T18:58:04.012600+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://foo/v1/nodes/30e0e997-6642-40e0-94b4-106949ec1185", "rel": "self"}, {"href": "http://foo/nodes/30e0e997-6642-40e0-94b4-106949ec1185", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://foo/v1/nodes/30e0e997-6642-40e0-94b4-106949ec1185/ports", "rel": "self"}, {"href": "http://foo/nodes/30e0e997-6642-40e0-94b4-106949ec1185/ports", "rel": "bookmark"}]} GET /v1/nodes/30e0e997-6642-40e0-94b4-106949ec1185 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c6cd6317-45d5-41d6-9e6b-b3c9321d6adb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "30e0e997-6642-40e0-94b4-106949ec1185", "created_at": "2025-11-11T18:58:04.012600+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://foo/v1/nodes/30e0e997-6642-40e0-94b4-106949ec1185", "rel": "self"}, {"href": "http://foo/nodes/30e0e997-6642-40e0-94b4-106949ec1185", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://foo/v1/nodes/30e0e997-6642-40e0-94b4-106949ec1185/ports", "rel": "self"}, {"href": "http://foo/nodes/30e0e997-6642-40e0-94b4-106949ec1185/ports", "rel": "bookmark"}]} GET /nodes/30e0e997-6642-40e0-94b4-106949ec1185 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-294f7e88-9517-4d9d-bb96-549a5d8933ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "30e0e997-6642-40e0-94b4-106949ec1185", "created_at": "2025-11-11T18:58:04.012600+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://foo/v1/nodes/30e0e997-6642-40e0-94b4-106949ec1185", "rel": "self"}, {"href": "http://foo/nodes/30e0e997-6642-40e0-94b4-106949ec1185", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://foo/v1/nodes/30e0e997-6642-40e0-94b4-106949ec1185/ports", "rel": "self"}, {"href": "http://foo/nodes/30e0e997-6642-40e0-94b4-106949ec1185/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_by_name [0.041757s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 204 No Content Openstack-Request-Id: req-913ec7fb-1df5-4119-b8c0-7f417e755892 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_links [0.136033s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-506610d7-10ba-45d3-a624-8cf3eaa435bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2564a9e1-8b22-4a09-8b48-5973b46223d9", "created_at": "2025-11-11T18:58:03.967220+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9", "rel": "self"}, {"href": "http://localhost/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9/ports", "rel": "self"}, {"href": "http://localhost/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9/ports", "rel": "bookmark"}]} GET /v1/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03492de3-3ad9-4409-ad9f-9e3751326c4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2564a9e1-8b22-4a09-8b48-5973b46223d9", "created_at": "2025-11-11T18:58:03.967220+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9", "rel": "self"}, {"href": "http://localhost/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9/ports", "rel": "self"}, {"href": "http://localhost/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9/ports", "rel": "bookmark"}]} GET /portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-695bcbe2-3694-431f-9291-78ab0e44f253 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2564a9e1-8b22-4a09-8b48-5973b46223d9", "created_at": "2025-11-11T18:58:03.967220+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9", "rel": "self"}, {"href": "http://localhost/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9/ports", "rel": "self"}, {"href": "http://localhost/portgroups/2564a9e1-8b22-4a09-8b48-5973b46223d9/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_not_supported [0.042131s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d52a69af-d06d-43a2-adaa-dcf4c57b33a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support management (disabled or not implemented).\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes [0.048037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?maintenance=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5a741745-c853-4ff6-9906-49a764dd6b61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "aa032b80-f008-480f-932b-d893edf07311", "instance_uuid": null, "maintenance": true, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/aa032b80-f008-480f-932b-d893edf07311", "rel": "self"}, {"href": "http://localhost/nodes/aa032b80-f008-480f-932b-d893edf07311", "rel": "bookmark"}]}, {"uuid": "26cef5d8-5f8a-4809-80e1-2a1aec248f8b", "instance_uuid": null, "maintenance": true, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/26cef5d8-5f8a-4809-80e1-2a1aec248f8b", "rel": "self"}, {"href": "http://localhost/nodes/26cef5d8-5f8a-4809-80e1-2a1aec248f8b", "rel": "bookmark"}]}]} GET /v1/nodes?maintenance=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bee28e4c-556c-4f7c-9e62-4f099f08acb0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "a2634b2e-4b7e-4f84-88dc-d6b206a41247", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/a2634b2e-4b7e-4f84-88dc-d6b206a41247", "rel": "self"}, {"href": "http://localhost/nodes/a2634b2e-4b7e-4f84-88dc-d6b206a41247", "rel": "bookmark"}]}, {"uuid": "92cb4fae-a79f-4416-825a-180db67cfc9a", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/92cb4fae-a79f-4416-825a-180db67cfc9a", "rel": "self"}, {"href": "http://localhost/nodes/92cb4fae-a79f-4416-825a-180db67cfc9a", "rel": "bookmark"}]}, {"uuid": "24d21f83-4015-4e67-b418-82abc8d8d271", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/24d21f83-4015-4e67-b418-82abc8d8d271", "rel": "self"}, {"href": "http://localhost/nodes/24d21f83-4015-4e67-b418-82abc8d8d271", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_foo [0.070089s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '1bc803b5-d3dc-47c6-9bad-60c462627570', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1, 'foo': 'bar'}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c893beb1-7698-459d-8b6e-73d7a2c64985 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: Additional properties are not allowed ('foo' was unexpected)\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_persistent [0.046526s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device?persistent=True WITH {'boot_device': 'pxe'} GOT Response: 204 No Content Openstack-Request-Id: req-da3d0503-0e50-4b3e-b728-db620cd544ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_associated [0.061357s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=true&maintenance=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e9ca95e4-9c61-44e2-b5e2-59c7bbed62da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "f8b6b604-6fb2-406a-8c02-cf69ffa733cc", "instance_uuid": "db4665ce-ecaa-4795-a67e-e73c3265db8a", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f8b6b604-6fb2-406a-8c02-cf69ffa733cc", "rel": "self"}, {"href": "http://localhost/nodes/f8b6b604-6fb2-406a-8c02-cf69ffa733cc", "rel": "bookmark"}]}, {"uuid": "56e8f176-78be-4eaa-8ffe-d5825b5a1790", "instance_uuid": "9b66cb50-e860-47c5-af09-b8eee5a22412", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/56e8f176-78be-4eaa-8ffe-d5825b5a1790", "rel": "self"}, {"href": "http://localhost/nodes/56e8f176-78be-4eaa-8ffe-d5825b5a1790", "rel": "bookmark"}]}, {"uuid": "6c2ad889-3ec8-4697-bc1b-eae3051e486a", "instance_uuid": "4ed3ece2-3e3e-4b0e-a7a3-93d18fc22800", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/6c2ad889-3ec8-4697-bc1b-eae3051e486a", "rel": "self"}, {"href": "http://localhost/nodes/6c2ad889-3ec8-4697-bc1b-eae3051e486a", "rel": "bookmark"}]}, {"uuid": "771892c9-2424-46ae-8bd8-a220a8b4d4ec", "instance_uuid": "d4603506-e4cb-4b0d-bb4e-e7ab9a54f376", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/771892c9-2424-46ae-8bd8-a220a8b4d4ec", "rel": "self"}, {"href": "http://localhost/nodes/771892c9-2424-46ae-8bd8-a220a8b4d4ec", "rel": "bookmark"}]}]} GET /v1/nodes?associated=true&maintenance=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f1361a2c-39af-4ea5-90d2-1795acbcb623 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": "3bd0778a-722a-4343-8c82-bfa7da5978dd", "maintenance": true, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} GET /v1/nodes?associated=true&maintenance=TruE WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-acffbd44-10a9-4452-9a53-95553cf65003 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": "3bd0778a-722a-4343-8c82-bfa7da5978dd", "maintenance": true, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_many [0.098229s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bf44e031-fe48-4377-a36c-ba5b9d1fc4c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "ef295eb4-7d0f-4742-868f-a3a4c926e378", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/ef295eb4-7d0f-4742-868f-a3a4c926e378", "rel": "self"}, {"href": "http://localhost/portgroups/ef295eb4-7d0f-4742-868f-a3a4c926e378", "rel": "bookmark"}]}, {"uuid": "aea90e00-3859-423f-a2f4-968e0e643212", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/aea90e00-3859-423f-a2f4-968e0e643212", "rel": "self"}, {"href": "http://localhost/portgroups/aea90e00-3859-423f-a2f4-968e0e643212", "rel": "bookmark"}]}, {"uuid": "2540b8d4-dd6a-4235-87ff-5d90352c3fa3", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/2540b8d4-dd6a-4235-87ff-5d90352c3fa3", "rel": "self"}, {"href": "http://localhost/portgroups/2540b8d4-dd6a-4235-87ff-5d90352c3fa3", "rel": "bookmark"}]}, {"uuid": "9d2c7956-7782-447c-9358-5f5fe2c03da8", "address": "52:54:00:cf:2d:33", "name": "portgroup3", "links": [{"href": "http://localhost/v1/portgroups/9d2c7956-7782-447c-9358-5f5fe2c03da8", "rel": "self"}, {"href": "http://localhost/portgroups/9d2c7956-7782-447c-9358-5f5fe2c03da8", "rel": "bookmark"}]}, {"uuid": "bc2988b2-aaee-4bd1-ba6a-ab2e1239505b", "address": "52:54:00:cf:2d:34", "name": "portgroup4", "links": [{"href": "http://localhost/v1/portgroups/bc2988b2-aaee-4bd1-ba6a-ab2e1239505b", "rel": "self"}, {"href": "http://localhost/portgroups/bc2988b2-aaee-4bd1-ba6a-ab2e1239505b", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_persistent_invalid_value [0.038478s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device?persistent=blah WITH {'boot_device': 'pxe'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-eeeb0034-45de-4a87-984c-a36c74e46f81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid persistent: Unrecognized value 'blah', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_interface1 [0.070213s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'c475a6b8-d549-4c24-a5bc-c57fdff05aa3', 'steps': [{'interface': [3], 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1cdffd35-cce3-4531-a683-e21c7a52afe1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: [3] is not of type 'string'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_error [0.031493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=true&maintenance=blah WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-23037209-c3eb-4b07-ae5b-642fc7a97f85 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid maintenance: Unrecognized value 'blah', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_by_name [0.046069s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/states/console WITH {'enabled': 'true'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/node-39/states/console Openstack-Request-Id: req-efa274f1-290f-432c-a0ef-41a2c64775fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many [0.048413s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-79b8b785-7e0a-42fd-ad08-0b8a911eaa23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "6dc70cb8-8a59-4846-8c8a-82ac8933bef8", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/6dc70cb8-8a59-4846-8c8a-82ac8933bef8", "rel": "self"}, {"href": "http://localhost/nodes/6dc70cb8-8a59-4846-8c8a-82ac8933bef8", "rel": "bookmark"}]}, {"uuid": "956a8290-fd9e-441b-bfe4-95eb7ae4ba8d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/956a8290-fd9e-441b-bfe4-95eb7ae4ba8d", "rel": "self"}, {"href": "http://localhost/nodes/956a8290-fd9e-441b-bfe4-95eb7ae4ba8d", "rel": "bookmark"}]}, {"uuid": "cead2aad-7f3f-4de3-8f98-4a9d2dd5fb80", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/cead2aad-7f3f-4de3-8f98-4a9d2dd5fb80", "rel": "self"}, {"href": "http://localhost/nodes/cead2aad-7f3f-4de3-8f98-4a9d2dd5fb80", "rel": "bookmark"}]}, {"uuid": "0ebbe3fe-7bab-4a17-a15e-0de8b160cb9f", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/0ebbe3fe-7bab-4a17-a15e-0de8b160cb9f", "rel": "self"}, {"href": "http://localhost/nodes/0ebbe3fe-7bab-4a17-a15e-0de8b160cb9f", "rel": "bookmark"}]}, {"uuid": "864ae5e4-1fac-4d53-ad0e-312fdfef9b81", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/864ae5e4-1fac-4d53-ad0e-312fdfef9b81", "rel": "self"}, {"href": "http://localhost/nodes/864ae5e4-1fac-4d53-ad0e-312fdfef9b81", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_one [0.078616s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-15eb84aa-3dca-41a3-adbc-c39778430d3a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_interface2 [0.073533s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'e5141d40-49eb-4e3c-a26b-b559ffa38eb2', 'steps': [{'interface': 'foo', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-30cbd771-ba2a-452d-b45c-00d7737562ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'foo' is not one of ['vendor', 'power', 'management', 'firmware', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_forbidden [0.029240s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3cf009ef-98fc-4ebc-ba02-bf3b5a4d1bfc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_by_name_unsupported [0.044260s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/states/console WITH {'enabled': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-70b0292a-8ae4-4bfb-92e0-c3c778e3327e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node node-39 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_have_names [0.043751s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b3212717-7821-4a55-8773-9e118e6db6fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"nodes": [{"uuid": "b77d5910-8e39-4f9c-ac47-21427cf136fe", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-0", "links": [{"href": "http://localhost/v1/nodes/b77d5910-8e39-4f9c-ac47-21427cf136fe", "rel": "self"}, {"href": "http://localhost/nodes/b77d5910-8e39-4f9c-ac47-21427cf136fe", "rel": "bookmark"}]}, {"uuid": "06a4d30d-cb3a-4c15-bbff-aadd6ebb8873", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-1", "links": [{"href": "http://localhost/v1/nodes/06a4d30d-cb3a-4c15-bbff-aadd6ebb8873", "rel": "self"}, {"href": "http://localhost/nodes/06a4d30d-cb3a-4c15-bbff-aadd6ebb8873", "rel": "bookmark"}]}, {"uuid": "5f5f4458-e8d0-4062-94b6-a5a078832da6", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-2", "links": [{"href": "http://localhost/v1/nodes/5f5f4458-e8d0-4062-94b6-a5a078832da6", "rel": "self"}, {"href": "http://localhost/nodes/5f5f4458-e8d0-4062-94b6-a5a078832da6", "rel": "bookmark"}]}, {"uuid": "0dc7c972-f97c-40e9-96e4-5bdb37162823", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-3", "links": [{"href": "http://localhost/v1/nodes/0dc7c972-f97c-40e9-96e4-5bdb37162823", "rel": "self"}, {"href": "http://localhost/nodes/0dc7c972-f97c-40e9-96e4-5bdb37162823", "rel": "bookmark"}]}, {"uuid": "09b50e9f-f544-4139-be91-c8098aeeadb4", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-4", "links": [{"href": "http://localhost/v1/nodes/09b50e9f-f544-4139-be91-c8098aeeadb4", "rel": "self"}, {"href": "http://localhost/nodes/09b50e9f-f544-4139-be91-c8098aeeadb4", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address [0.089798s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?address=aa:bb:cc:dd:ee:f1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab3dd03a-56c5-4825-81c5-416d61373442 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "bbc38a6e-f12a-495d-96fd-aadae04a1721", "address": "aa:bb:cc:dd:ee:f1", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/bbc38a6e-f12a-495d-96fd-aadae04a1721", "rel": "self"}, {"href": "http://localhost/portgroups/bbc38a6e-f12a-495d-96fd-aadae04a1721", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_negative_order [0.074831s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '18cdb9b8-29d1-4967-aac9-154cfbeb520c', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': -1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c1cb20cb-605f-4946-9b00-ddb47225728a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: -1 is less than the minimum of 0\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbid_project_mismatch [0.039429s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?project=54321 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-435f9897-ab30-47ea-8908-be2e2a2e401e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_bad_request [0.092734s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': 'invalid-value'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b5c5637c-a92f-4458-a47d-16666388cad0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid enabled: Unrecognized value 'invalid-value', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_invalid_address_format [0.071500s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?address=invalid-mac-format WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-829b585b-6c80-45e2-8662-a4525310b06f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-mac-format\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_bad_request_missing_parameter [0.038041s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-42fe905f-b3eb-4fa4-b5a7-6ddcd6e8ce61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: enabled\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_order [0.070581s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '0e8a7036-b38b-434b-8819-59df867148b2', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 'not a number'}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1e5338ec-801d-49ef-9307-f6e4728e7140 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'not a number' does not match '^[0-9]+$'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_non_existent_address [0.038975s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?address=aa:bb:cc:dd:ee:ff WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab008a36-79f7-45fd-a5c6-729c67327caf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": []} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_console_not_supported [0.040469s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': 'true'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-35761e22-7f6e-47c6-9d38-4db745c07ae9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support console (disabled or not implemented).\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_get_all_invalid_api_version [0.034795s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e4ca6fb5-39ce-47d1-9a4e-24d60acbe07e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.14 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden [0.131970s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3cb1edef-0dd6-4a37-b9b1-8fffcae0a12c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"nodes": [{"uuid": "05682773-4f8e-4cfe-b728-b09621457eb5", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/05682773-4f8e-4cfe-b728-b09621457eb5", "rel": "self"}, {"href": "http://localhost/nodes/05682773-4f8e-4cfe-b728-b09621457eb5", "rel": "bookmark"}]}, {"uuid": "7a0eb226-f967-4bdf-877c-95b5ffdf9cd2", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/7a0eb226-f967-4bdf-877c-95b5ffdf9cd2", "rel": "self"}, {"href": "http://localhost/nodes/7a0eb226-f967-4bdf-877c-95b5ffdf9cd2", "rel": "bookmark"}]}, {"uuid": "f8014627-9f9c-4cd5-896f-b38057c9d666", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/f8014627-9f9c-4cd5-896f-b38057c9d666", "rel": "self"}, {"href": "http://localhost/nodes/f8014627-9f9c-4cd5-896f-b38057c9d666", "rel": "bookmark"}]}, {"uuid": "ca9c3206-91e9-49dc-bc3c-bc38cf2bf3ee", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/ca9c3206-91e9-49dc-bc3c-bc38cf2bf3ee", "rel": "self"}, {"href": "http://localhost/nodes/ca9c3206-91e9-49dc-bc3c-bc38cf2bf3ee", "rel": "bookmark"}]}, {"uuid": "c13c1dd2-2b5c-410b-8bb9-61c352e6adf0", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/c13c1dd2-2b5c-410b-8bb9-61c352e6adf0", "rel": "self"}, {"href": "http://localhost/nodes/c13c1dd2-2b5c-410b-8bb9-61c352e6adf0", "rel": "bookmark"}]}, {"uuid": "4cc23d2f-437e-4ac1-912c-ba5eaa6680a9", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/4cc23d2f-437e-4ac1-912c-ba5eaa6680a9", "rel": "self"}, {"href": "http://localhost/nodes/4cc23d2f-437e-4ac1-912c-ba5eaa6680a9", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_step [0.071142s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '26a1d8f4-7358-47ef-b215-564e0608e660', 'steps': [{'interface': 'raid', 'step': 1, 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-474db89c-773d-4127-b891-49803be763bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 1 is not of type 'string'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_disabled [0.041446s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': 'false'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console Openstack-Request-Id: req-afcdabe1-5c97-4b64-95ae-2be62bfeff91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden_no_project [0.050859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-27dec1cf-d699-4d4d-9b24-7400b595380b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_enabled [0.038592s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': 'true'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console Openstack-Request-Id: req-a7472467-b5e2-4df0-a6b4-05f98e0ebdf8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_long_name [0.075305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': 'c183a97e-3231-4c70-9220-dc7874e8729d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/c183a97e-3231-4c70-9220-dc7874e8729d Openstack-Request-Id: req-1d8861a1-d6a7-49a7-83c5-e19e4de7d95b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c183a97e-3231-4c70-9220-dc7874e8729d", "created_at": "2025-11-11T18:58:04.550479+00:00", "updated_at": null, "name": "CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/c183a97e-3231-4c70-9220-dc7874e8729d", "rel": "self"}, {"href": "http://localhost/runbooks/c183a97e-3231-4c70-9220-dc7874e8729d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource [0.101529s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/ddf30d39-2d65-482e-abdb-b3eb5fd315d3/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5aaed38b-6a9b-4eeb-ae9b-a1f8d43b06e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "689fca43-b3bd-41be-8af2-a0eabaa1e850", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/689fca43-b3bd-41be-8af2-a0eabaa1e850", "rel": "self"}, {"href": "http://localhost/ports/689fca43-b3bd-41be-8af2-a0eabaa1e850", "rel": "bookmark"}]}, {"uuid": "c458c568-6663-4ff8-a320-fa1c6c5d7881", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/c458c568-6663-4ff8-a320-fa1c6c5d7881", "rel": "self"}, {"href": "http://localhost/ports/c458c568-6663-4ff8-a320-fa1c6c5d7881", "rel": "bookmark"}]}]} GET /v1/portgroups/ddf30d39-2d65-482e-abdb-b3eb5fd315d3/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cfd21bd9-b5e9-44cb-b746-52c929577927 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "689fca43-b3bd-41be-8af2-a0eabaa1e850", "created_at": "2025-11-11T18:58:04.500054+00:00", "updated_at": null, "address": "52:54:00:cf:2d:30", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/689fca43-b3bd-41be-8af2-a0eabaa1e850", "rel": "self"}, {"href": "http://localhost/ports/689fca43-b3bd-41be-8af2-a0eabaa1e850", "rel": "bookmark"}], "portgroup_uuid": "ddf30d39-2d65-482e-abdb-b3eb5fd315d3"}, {"uuid": "c458c568-6663-4ff8-a320-fa1c6c5d7881", "created_at": "2025-11-11T18:58:04.503102+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/c458c568-6663-4ff8-a320-fa1c6c5d7881", "rel": "self"}, {"href": "http://localhost/ports/c458c568-6663-4ff8-a320-fa1c6c5d7881", "rel": "bookmark"}], "portgroup_uuid": "ddf30d39-2d65-482e-abdb-b3eb5fd315d3"}]} GET /v1/portgroups/ddf30d39-2d65-482e-abdb-b3eb5fd315d3/ports?limit=1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8c140ae9-c094-4a37-84ff-3954a3e0036d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "689fca43-b3bd-41be-8af2-a0eabaa1e850", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/689fca43-b3bd-41be-8af2-a0eabaa1e850", "rel": "self"}, {"href": "http://localhost/ports/689fca43-b3bd-41be-8af2-a0eabaa1e850", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=1&marker=689fca43-b3bd-41be-8af2-a0eabaa1e850"} GET /v1/portgroups/ddf30d39-2d65-482e-abdb-b3eb5fd315d3/ports/315a1911-773a-4736-8a8c-45f9c2dbf1d3 WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} GET /v1/portgroups/ddf30d39-2d65-482e-abdb-b3eb5fd315d3/ports/07ed168d-87ee-4cd5-abe4-407813bb1035 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6f09feed-175e-479c-adc7-0790bcc10cf6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_mask_available_state [0.046932s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ca50e5b6-1762-48b6-87fb-5708f907033c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.551232+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b11c5bae-3cb0-4135-98d2-cb416dc7022f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.2 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.551232+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_no_portgroups_allowed [0.042616s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/03735705-74c6-46e1-bf5c-713511b22911/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state [0.085083s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system WITH {'state': 'on'} GOT Response: 204 No Content Openstack-Request-Id: req-f3238a2b-9101-48ab-95af-da5c503db625 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association [0.048147s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?limit=3&associated=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1507955a-d9dc-4fdd-a6a0-86120bc47a56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "c5c045a2-6509-4e62-9733-8f82f2df89e2", "instance_uuid": "939a596e-4b1d-46fd-ad99-4b6e67fee516", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/c5c045a2-6509-4e62-9733-8f82f2df89e2", "rel": "self"}, {"href": "http://localhost/nodes/c5c045a2-6509-4e62-9733-8f82f2df89e2", "rel": "bookmark"}]}, {"uuid": "f6345e25-08a2-4941-a6bb-9fea1e39420b", "instance_uuid": "0a79edeb-19ca-4024-a065-81da66aaec43", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f6345e25-08a2-4941-a6bb-9fea1e39420b", "rel": "self"}, {"href": "http://localhost/nodes/f6345e25-08a2-4941-a6bb-9fea1e39420b", "rel": "bookmark"}]}, {"uuid": "afbb101f-b537-4b47-bdb5-f8e2d65e8469", "instance_uuid": "07321d7a-dc17-4516-ab43-76d09905615a", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/afbb101f-b537-4b47-bdb5-f8e2d65e8469", "rel": "self"}, {"href": "http://localhost/nodes/afbb101f-b537-4b47-bdb5-f8e2d65e8469", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&associated=True&fields=instance_uuid,maintenance,power_state,provision_state,uuid,name&limit=3&marker=afbb101f-b537-4b47-bdb5-f8e2d65e8469"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_name_invalid_too_long [0.067070s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': '3bfc12c1-8eee-45bc-8149-181b29055562', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ecf1f617-c36c-4572-a315-c7928fae16e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' is too long\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_not_allowed [0.036773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_next_link_with_association_with_detail [0.066738s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?limit=3&associated=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a0a8f53e-28f1-4641-8285-587bfcfc2683 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "e184ac80-d4d9-4a5d-969b-75abf2936201", "created_at": "2025-11-11T18:58:04.656783+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "d4b7c1c5-528e-4db6-abba-e086a3fe5806", "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/e184ac80-d4d9-4a5d-969b-75abf2936201", "rel": "self"}, {"href": "http://localhost/nodes/e184ac80-d4d9-4a5d-969b-75abf2936201", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e184ac80-d4d9-4a5d-969b-75abf2936201/ports", "rel": "self"}, {"href": "http://localhost/nodes/e184ac80-d4d9-4a5d-969b-75abf2936201/ports", "rel": "bookmark"}]}, {"uuid": "9864c745-0c07-43d4-a0be-d016824e7a7d", "created_at": "2025-11-11T18:58:04.658539+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "21a5e288-a01c-43f7-b77f-4f390a63c99f", "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/9864c745-0c07-43d4-a0be-d016824e7a7d", "rel": "self"}, {"href": "http://localhost/nodes/9864c745-0c07-43d4-a0be-d016824e7a7d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9864c745-0c07-43d4-a0be-d016824e7a7d/ports", "rel": "self"}, {"href": "http://localhost/nodes/9864c745-0c07-43d4-a0be-d016824e7a7d/ports", "rel": "bookmark"}]}, {"uuid": "628625e2-1cb9-4bf9-9616-6f9843e7bf15", "created_at": "2025-11-11T18:58:04.660711+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": "b60fdb2d-5d8b-43f0-a652-5d0d54ec4a06", "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/628625e2-1cb9-4bf9-9616-6f9843e7bf15", "rel": "self"}, {"href": "http://localhost/nodes/628625e2-1cb9-4bf9-9616-6f9843e7bf15", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/628625e2-1cb9-4bf9-9616-6f9843e7bf15/ports", "rel": "self"}, {"href": "http://localhost/nodes/628625e2-1cb9-4bf9-9616-6f9843e7bf15/ports", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes/detail?sort_key=id&sort_dir=asc&associated=True&limit=3&marker=628625e2-1cb9-4bf9-9616-6f9843e7bf15"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_portgroup_not_found [0.040426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-065f3241-07d6-4345-b704-6b4903579cb6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_invalid_value [0.096049s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system?state=glow WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-663d62de-f531-48c2-9910-40082f562c58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"error\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_field_name [0.064186s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'uuid': '6770dad6-0fde-457b-a43d-c318e180e4c7', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ae0947d5-fbb3-49d3-b3f9-0b947f32d619 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'name' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key [0.046985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c832fd30-6756-4800-a300-cc7b4c96c674 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "993c264f-f09e-41b3-9829-c715655dd111", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/993c264f-f09e-41b3-9829-c715655dd111", "rel": "self"}, {"href": "http://localhost/portgroups/993c264f-f09e-41b3-9829-c715655dd111", "rel": "bookmark"}]}, {"uuid": "c9fcfe84-4807-4eb0-bf6a-e17b9f607be0", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/c9fcfe84-4807-4eb0-bf6a-e17b9f607be0", "rel": "self"}, {"href": "http://localhost/portgroups/c9fcfe84-4807-4eb0-bf6a-e17b9f607be0", "rel": "bookmark"}]}, {"uuid": "f1a3dd6a-24d1-4a23-961b-e4baf484dad6", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/f1a3dd6a-24d1-4a23-961b-e4baf484dad6", "rel": "self"}, {"href": "http://localhost/portgroups/f1a3dd6a-24d1-4a23-961b-e4baf484dad6", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_false_field [0.082672s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1488467c-b313-4527-947c-fbeebc9a7889 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.734177+00:00", "updated_at": null, "automated_clean": false, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_field_steps [0.066663s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '6bed184b-31ca-4c16-b7bf-d42e930615dc', 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-38608368-f49e-49aa-98b8-d62f56b42570 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'steps' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_not_supported [0.092391s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system WITH {'state': 'on'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c62b2e2d-6edf-4657-9bc8-2fded8873959 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Driver test-driver does not support management (disabled or not implemented).\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_hidden_in_lower_version [0.044015s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0175bcdf-f683-431c-91b6-1eb75a92618b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.796478+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-81f85f52-04a9-4c10-a268-f3afe47c4cd0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.796478+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "targe t_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_allowed [0.074588s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?sort_key=mode WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bf1bb151-6b1c-4860-b832-079baf664e75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "e5c75caf-ec12-49d9-b360-69faeb37ad6c", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/e5c75caf-ec12-49d9-b360-69faeb37ad6c", "rel": "self"}, {"href": "http://localhost/portgroups/e5c75caf-ec12-49d9-b360-69faeb37ad6c", "rel": "bookmark"}]}, {"uuid": "e2bad6bc-44f2-4e42-a16e-fab257d9b738", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/e2bad6bc-44f2-4e42-a16e-fab257d9b738", "rel": "self"}, {"href": "http://localhost/portgroups/e2bad6bc-44f2-4e42-a16e-fab257d9b738", "rel": "bookmark"}]}, {"uuid": "84389ed8-5f73-4078-bc86-e9922779488e", "address": "52:54:00:cf:2d:33", "name": "portgroup3", "links": [{"href": "http://localhost/v1/portgroups/84389ed8-5f73-4078-bc86-e9922779488e", "rel": "self"}, {"href": "http://localhost/portgroups/84389ed8-5f73-4078-bc86-e9922779488e", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_null_field [0.038722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-83f2941c-07e2-4f3f-94be-f98147510ce2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.841711+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_step_field_interface [0.067535s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '6a3208d6-a28d-4dea-8751-b9730687a2ea', 'steps': [{'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8604f51b-7cd8-421f-909e-5d80747da03c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'interface' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_qs [0.058548s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system?state=on WITH {} GOT Response: 204 No Content Openstack-Request-Id: req-fb501604-b372-4d71-9567-49def1a02734 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_true_field [0.037573s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-859a1e6d-e5db-480a-8df8-7af22e30c0c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.880801+00:00", "updated_at": null, "automated_clean": true, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_invalid [0.074135s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-db680cb9-b044-4095-a930-81e20b744c7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/portgroups?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2f74f809-bc38-4cef-a2db-3f8d1955a043 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/portgroups?sort_key=internal_info WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f8fdd03d-94b9-4f82-9822-69d683028b0f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value internal_info is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/portgroups?sort_key=properties WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-71f9bb41-14f1-4766-87ff-dd8ad3f30f67 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value properties is an invalid field for sorting\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_versioning [0.043944s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators/led@system WITH {'state': 'on'} GOT Response: 204 No Content Openstack-Request-Id: req-27378a21-76a8-44b4-a6b8-d250f5c69fd8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.63 {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_step_field_order [0.064036s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '12a727f4-ee60-4a6b-883a-ed69bc0a7e45', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1ad2595b-84ec-4089-8d2e-c6e155dbe8a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'order' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_bios_hidden_in_lower_version [0.046228s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-46fbd38d-01e6-46e3-934a-a20013cc05ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.39 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.920072+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b7d2841b-350c-4083-a7d4-9308f57ad907 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:04.920072+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nod es/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode [0.042522s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH {'reason': 'fake_reason'} GOT Response: 202 Accepted Openstack-Request-Id: req-7676d497-e858-499d-b18b-ee6140481340 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {0} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_not_allowed [0.057012s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?sort_key=mode WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-3f5ab6d1-a106-496c-bfb8-dfcb0456ae56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode [0.046223s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7d9c0444-8b53-49b1-a846-072c069cd34f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "e52fc27c-1eb4-4016-af76-b9f5966e54e6", "created_at": "2025-11-11T18:58:04.967068+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": "bios", "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6", "rel": "self"}, {"href": "http://localhost/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6/states", "rel": "self"}, {"href": "http://localhost/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/e52fc27c-1eb4-4016-af76-b9f5966e54e6/volume", "rel": "bookmark"}]} GET /v1/nodes/81b865d5-9553-4dec-9b25-37467306e7ce WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b0be9049-2391-4a50-8b45-ae81575c9911 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "81b865d5-9553-4dec-9b25-37467306e7ce", "created_at": "2025-11-11T18:58:04.977286+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": "uefi", "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {} , "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/81b865d5-9553-4dec-9b25-37467306e7ce", "rel": "self"}, {"href": "http://localhost/nodes/81b865d5-9553-4dec-9b25-37467306e7ce", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/81b865d5-9553-4dec-9b25-37467306e7ce/ports", "rel": "self"}, {"href": "http://localhost/nodes/81b865d5-9553-4dec-9b25-37467306e7ce/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/81b865d5-9553-4dec-9b25-37467306e7ce/states", "rel": "self"}, {"href": "http://localhost/nodes/81b865d5-9553-4dec-9b25-37467306e7ce/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/81b865d5-9553-4dec-9b25-37467306e7ce/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/81b865d5-9553-4dec-9b25-37467306e7ce/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/81b865d5-9553-4dec-9b25-37467306e7ce/volume", "rel": "self"}, {"href": "http://localhost/nodes/81b865d5-9553-4dec-9b25-37467306e7ce/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_by_name [0.039598s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/maintenance WITH {'reason': 'fake_reason'} GOT Response: 202 Accepted Openstack-Request-Id: req-371ec45d-c367-4a65-94d4-516a174206ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_step_field_step [0.075401s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '9879c2b2-a440-4df3-8c38-f8bad19a3c66', 'steps': [{'interface': 'raid', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-463081be-abc0-4986-b357-e4597f6b182c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for runbook: 'step' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionAutoDiscovery.test_enroll [0.064344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-3ed8a532-fd0d-4fa7-b42c-fce436df6f21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "15c25a62-21d3-42f7-a450-a3182d5e604f"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_hidden_in_lower_version [0.044926s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f23ee971-defc-43d4-8531-c9c8c8d39cd4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.014258+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a28d9b36-f8d3-400e-ba05-1fb177fa626b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.014258+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_error [0.040316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH {'reason': 'fake'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-0da8b179-563c-4073-93c4-4925168bad44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_public_runbook_project_scope_fails [0.068992s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '04d7c4c6-a4e2-4dc3-becf-e1f342139777', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': True, 'owner': 'catsay'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3cec2c17-1bae-4b07-8f49-10ee359c4467 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create a runbook as a project scoped admin with an owner other than your own project.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_null_field [0.037344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-07e56afa-7942-484b-9f33-c96b42d82148 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.058471+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason [0.040655s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH {} GOT Response: 202 Accepted Openstack-Request-Id: req-f54300f6-b32a-4381-bc58-1ba16fca90ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionAutoDiscovery.test_override_defaults [0.065196s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-abc00c2d-de42-4f98-8daa-bc4625aca392 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "c51ab7d6-4239-411a-98f0-0eba52f77a80"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid [0.036805s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?instance_uuid=62248d34-ffac-44fd-8b37-e32bce3a0191 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4c495eab-d412-45cb-867f-8f3cb4d2af2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"nodes": [{"uuid": "b850d177-0956-4cd6-b033-e430fb982b72", "instance_uuid": "62248d34-ffac-44fd-8b37-e32bce3a0191", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/b850d177-0956-4cd6-b033-e430fb982b72", "rel": "self"}, {"href": "http://localhost/nodes/b850d177-0956-4cd6-b033-e430fb982b72", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_invalid_uuid [0.028344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?instance_uuid=fake WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-82bc42a4-30c8-4877-95c6-83a7744c2fb0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for instance_uuid: fake\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_runbook_owner_project_scope_fails [0.064982s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '8d96a344-fdf0-41a7-8f29-fe3bf8f8e2aa', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': 'catsay'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cf92757f-d37a-49b6-94f8-1c00d069b015 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create a runbook as a project scoped admin with an owner other than your own project.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionAutoDiscovery.test_wrong_driver [0.069332s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/continue_inspection WITH {'inventory': {'bmc_address': '192.0.2.42', 'interfaces': [{'mac_address': '11:22:33:44:55:66', 'name': 'em0'}, {'mac_address': '66:55:44:33:22:11', 'name': 'em1'}]}, 'test': 42} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-283fb1e9-7eb6-4bae-b5f7-bc101ce9c0b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"An unknown exception occurred.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_wrong_uuid [0.036104s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?instance_uuid=9f49ba67-268f-412c-92aa-fb14fdf8b6ef WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-50796cb3-f51d-4c6f-8ae2-798004bc5eae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": []} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_runbook_owner_system_scope [0.077577s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'f0a709c3-3974-44b9-993e-24908013084f', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': 'catsay'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/f0a709c3-3974-44b9-993e-24908013084f Openstack-Request-Id: req-15626d0b-754a-4f33-a59b-42853c530cc0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f0a709c3-3974-44b9-993e-24908013084f", "created_at": "2025-11-11T18:58:05.203457+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "catsay", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/f0a709c3-3974-44b9-993e-24908013084f", "rel": "self"}, {"href": "http://localhost/runbooks/f0a709c3-3974-44b9-993e-24908013084f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/f0a709c3-3974-44b9-993e-24908013084f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cd4739b7-600b-4436-8cf8-a7219c14de38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f0a709c3-3974-44b9-993e-24908013084f", "created_at": "2025-11-11T18:58:05.203457+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "catsay", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/f0a709c3-3974-44b9-993e-24908013084f", "rel": "self"}, {"href": "http://localhost/runbooks/f0a709c3-3974-44b9-993e-24908013084f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_conductor_group_hidden_in_lower_version [0.087806s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-74205f88-3b36-4467-b200-667afdd468a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.217158+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a92b0e8f-b8df-4f55-be41-098953afd618 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.217158+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_fast_deploy_lookup [0.106411s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=c20540dc-961a-4d69-9b82-fe98ad9e848b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5522612d-80c7-4a22-b6aa-ae7e6fc612da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "c20540dc-961a-4d69-9b82-fe98ad9e848b", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value", "agent_secret_token": "******"}, "links": [{"href": "http://localhost/v1/nodes/c20540dc-961a-4d69-9b82-fe98ad9e848b", "rel": "self"}, {"href": "http://localhost/nodes/c20540dc-961a-4d69-9b82-fe98ad9e848b", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "abcxyz", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=c20540dc-961a-4d69-9b82-fe98ad9e848b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-140f380f-a409-4789-b095-dbf9636ee362 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "c20540dc-961a-4d69-9b82-fe98ad9e848b", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value", "agent_secret_token": "******"}, "links": [{"href": "http://localhost/v1/nodes/c20540dc-961a-4d69-9b82-fe98ad9e848b", "rel": "self"}, {"href": "http://localhost/nodes/c20540dc-961a-4d69-9b82-fe98ad9e848b", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "******", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=c20540dc-961a-4d69-9b82-fe98ad9e848b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1f41544f-cbed-4ee5-ab1f-4ec995b448c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "c20540dc-961a-4d69-9b82-fe98ad9e848b", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value", "agent_secret_token": "******"}, "links": [{"href": "http://localhost/v1/nodes/c20540dc-961a-4d69-9b82-fe98ad9e848b", "rel": "self"}, {"href": "http://localhost/nodes/c20540dc-961a-4d69-9b82-fe98ad9e848b", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "******", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_runbook_project_scope [0.080471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '3d5e04cc-26db-4ed2-90d8-c8e291651050', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/3d5e04cc-26db-4ed2-90d8-c8e291651050 Openstack-Request-Id: req-9f51097c-6ab8-4c6c-b99a-a07247d49c1c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "3d5e04cc-26db-4ed2-90d8-c8e291651050", "created_at": "2025-11-11T18:58:05.305796+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/3d5e04cc-26db-4ed2-90d8-c8e291651050", "rel": "self"}, {"href": "http://localhost/runbooks/3d5e04cc-26db-4ed2-90d8-c8e291651050", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/3d5e04cc-26db-4ed2-90d8-c8e291651050 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd7a69e0-e0d3-4f82-80c2-5d8ec1596717 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "3d5e04cc-26db-4ed2-90d8-c8e291651050", "created_at": "2025-11-11T18:58:05.305796+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/3d5e04cc-26db-4ed2-90d8-c8e291651050", "rel": "self"}, {"href": "http://localhost/runbooks/3d5e04cc-26db-4ed2-90d8-c8e291651050", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_conductor_hidden_in_lower_version [0.101535s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4eaa7525-1093-425a-a0a0-59d0b9976ebe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.335120+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e27a4ade-ec68-49ec-b48e-559eb1f99d80 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.335120+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_inter face": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason_by_name [0.301324s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/maintenance WITH {} GOT Response: 202 Accepted Openstack-Request-Id: req-50510b93-e9fe-44d7-a0b2-94e8e86bcc83 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_addresses [0.124103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c4998c3b-e71c-42b9-a1fc-e32d44f6dca1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "0987a02b-1c37-4c3b-8b11-e98847b69bcc", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value", "agent_secret_token": "******"}, "links": [{"href": "http://localhost/v1/nodes/0987a02b-1c37-4c3b-8b11-e98847b69bcc", "rel": "self"}, {"href": "http://localhost/nodes/0987a02b-1c37-4c3b-8b11-e98847b69bcc", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "some-value", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_runbook_system_scope [0.100174s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'b4aa0d0f-bec3-481a-8e36-12883fa77319', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/b4aa0d0f-bec3-481a-8e36-12883fa77319 Openstack-Request-Id: req-ac79e62e-ecad-4267-9781-dab6b807c866 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b4aa0d0f-bec3-481a-8e36-12883fa77319", "created_at": "2025-11-11T18:58:05.402560+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/b4aa0d0f-bec3-481a-8e36-12883fa77319", "rel": "self"}, {"href": "http://localhost/runbooks/b4aa0d0f-bec3-481a-8e36-12883fa77319", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/b4aa0d0f-bec3-481a-8e36-12883fa77319 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0f311cec-430b-4424-97e5-cb9a00aa1daf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b4aa0d0f-bec3-481a-8e36-12883fa77319", "created_at": "2025-11-11T18:58:05.402560+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/b4aa0d0f-bec3-481a-8e36-12883fa77319", "rel": "self"}, {"href": "http://localhost/runbooks/b4aa0d0f-bec3-481a-8e36-12883fa77319", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_only_uuid [0.085970s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?node_uuid=13cbba95-068c-41fc-b905-39b477c4ff6e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f0aaebc9-d0ed-40e0-9dd8-632979b2d86d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "13cbba95-068c-41fc-b905-39b477c4ff6e", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value", "agent_secret_token": "******"}, "links": [{"href": "http://localhost/v1/nodes/13cbba95-068c-41fc-b905-39b477c4ff6e", "rel": "self"}, {"href": "http://localhost/nodes/13cbba95-068c-41fc-b905-39b477c4ff6e", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "xyzabc", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_deploy_step_hidden_in_lower_version [0.100487s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-64313f48-e43b-4cc8-af9d-2e3c57c2f497 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.43 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.441733+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8bc1372b-dc6b-4e19-8c2b-61854b96868c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.44 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.441733+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_uuid [0.045696s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=1fdc6456-2d85-4682-b97d-4245c8323b51 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b5186389-511d-4d24-bd4e-88551bb9370e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "1fdc6456-2d85-4682-b97d-4245c8323b51", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value", "agent_secret_token": "******"}, "links": [{"href": "http://localhost/v1/nodes/1fdc6456-2d85-4682-b97d-4245c8323b51", "rel": "self"}, {"href": "http://localhost/nodes/1fdc6456-2d85-4682-b97d-4245c8323b51", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "this_thing_on?", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_standard_trait_name [0.104946s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'HW_CPU_X86_VMX', 'uuid': 'f569500d-3a10-4463-a9d5-9b8331743ea9', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/f569500d-3a10-4463-a9d5-9b8331743ea9 Openstack-Request-Id: req-338ad892-5cda-4b5c-9f6e-19b8d9a156fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f569500d-3a10-4463-a9d5-9b8331743ea9", "created_at": "2025-11-11T18:58:05.527887+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/f569500d-3a10-4463-a9d5-9b8331743ea9", "rel": "self"}, {"href": "http://localhost/runbooks/f569500d-3a10-4463-a9d5-9b8331743ea9", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_cleanhold [0.130017s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unhold'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-695f8bc9-9a0f-41f9-b5b7-c2953d0cc4ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.85 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_description_null_field [0.085499s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1d33a70a-3231-4c30-9317-a91e6bc4400d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.51 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.532080+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_ignore_malformed_address [0.049742s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=not-a-valid-address,80:00:02:48:fe:80:00:00:00:00:00:00:f4:52:14:03:00:54:06:c2,11:22:33:44:55:66,66:55:44:33:22:11 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d6c7e062-1db6-4c0d-b431-8c50497980f6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "e4eeb88c-e48f-4339-b277-02722cdd9287", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value", "agent_secret_token": "******"}, "links": [{"href": "http://localhost/v1/nodes/e4eeb88c-e48f-4339-b277-02722cdd9287", "rel": "self"}, {"href": "http://localhost/nodes/e4eeb88c-e48f-4339-b277-02722cdd9287", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "123456", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_invalid_input_addresses [0.033092s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=meow1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-47f0c7d3-ae11-4268-9f33-08cb1dbb3ba3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"At least one of 'addresses' and 'node_uuid' parameters is required\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_invalid_input_node_uuid [0.033928s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?node_uuid=meow1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-449b4d88-4556-46e2-b0e2-0ccac4756259 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for node_uuid: meow1\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_cleanhold_not_allowed [0.115323s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unhold'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-4157fe1e-2d8a-4a7b-a301-8d90ca7abb2b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.84 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_step_string_order [0.089420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '8030dbf8-7842-48be-848f-230a2f5ebcd5', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': '1'}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/8030dbf8-7842-48be-848f-230a2f5ebcd5 Openstack-Request-Id: req-75acd019-3a97-435f-aa7b-98ecc2f3a318 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8030dbf8-7842-48be-848f-230a2f5ebcd5", "created_at": "2025-11-11T18:58:05.636569+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/8030dbf8-7842-48be-848f-230a2f5ebcd5", "rel": "self"}, {"href": "http://localhost/runbooks/8030dbf8-7842-48be-848f-230a2f5ebcd5", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": "1"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_fault_hidden_in_lower_version [0.099130s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-05f98b5f-9c08-4450-ba28-3c05485bd0e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.41 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.615772+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93335a6f-97c7-4935-9bd4-2fd1a9200dfc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.615772+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "lin ks": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_steps_invalid_duplicate [0.068603s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '4a184daf-f580-4d76-9d0f-377c6fadf784', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': '0'}, 'order': 0}, {'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': '1'}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a6ba97c2-e663-47fc-a40b-c5d8ebf45745 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template invalid: Duplicate deploy steps. A template cannot have multiple deploy steps with the same interface and step. Duplicates: interface: raid, step: create_configuration.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_deployhold [0.099769s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unhold'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-c7fa0d01-c4a0-4f26-b49d-80fafebceb98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.85 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_inspect_wait_state_between_api_versions [0.089600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f00f400d-434f-458e-9f3c-0fe531576bea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.713541+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "inspecting", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e8d3e1b-7f8b-422b-a19c-f50964c6227e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.39 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.713541+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "inspect wait", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2 e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch [0.037727s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_no_add_root_attr [0.029415s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_interface_fields_hidden_in_lower_version [0.081822s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-993de717-5d3f-4828-9dbe-3ea2d22a8dc9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.809422+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_deployhold_not_allowed [0.094580s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unhold'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-dc462aa5-b8a5-402e-ace8-69c256fb99b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.84 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_remove_non_existent [0.046553s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_no_restrict_lookup [0.225354s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=c188ea5e-1d83-4e03-8a1b-550575e7c4e8 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cba3f433-c7e4-475b-a444-ff2b837ff7d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "c188ea5e-1d83-4e03-8a1b-550575e7c4e8", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"private_state": "secret value", "agent_secret_token": "******"}, "links": [{"href": "http://localhost/v1/nodes/c188ea5e-1d83-4e03-8a1b-550575e7c4e8", "rel": "self"}, {"href": "http://localhost/nodes/c188ea5e-1d83-4e03-8a1b-550575e7c4e8", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "234567890", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_replace_non_existent_list_item [0.041325s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_not_found [0.035013s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-02da71f0-bad3-42f0-a5df-517746094ba8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_hidden_in_lower_version [0.092755s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-685251da-9efe-42e7-98d8-aba2bf9380d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.64 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.889770+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-01304590-033a-43bb-8da6-0953e4e86e06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.889770+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x 86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_servicehold [0.094922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unhold'} GOT Response: 202 Accepted Location: http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states Openstack-Request-Id: req-a0a52f7e-69fb-41ec-9636-fa3abb2e904a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.86 {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields [0.030278s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_nothing_provided [0.037725s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dbf80113-c90b-4f73-a0ce-0b9ffbacd4d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"At least one of 'addresses' and 'node_uuid' parameters is required\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_null_field [0.050105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-baaeb43e-5a0d-44c7-a3c5-dfcabb91cf61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:05.968649+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields_fail [0.037920s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_old_api_version [0.039818s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2bc066cf-e8fe-4ccc-ad35-13f215982185 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_present [0.039088s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e50413fc-59c9-4ef7-845c-01e1336cbce0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.007022+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": "some-lucky-project", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_multiple_success [0.040178s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unrescue_raises_error_before_1_38 [0.078428s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'unrescue'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-80aa2ad9-3ce3-49e2-896d-f47ef19b3c09 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_restrict_lookup [0.062943s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=869a5113-df7a-45df-acec-654ab1b28da5 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0d3646da-ca48-4cb0-b9ec-15ac25f7f750 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data [0.038882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6ca8da3a-f75e-4a7e-9fe8-ca2e4cfc047e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.66 {"uuid": "88723186-94e9-45fb-af5c-7b5f5ca91b32", "created_at": "2025-11-11T18:58:06.045829+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {"links": [{"id": "interface2", "type": "vif", "ethernet_mac_address": "a0:36:9f:2c:e8:70", "vif_id": "e1c90e9f-eafc-4e2d-8ec9-58b91cebb53d", "mtu": 1500}, {"id": "interface0", "type": "phy", "ethernet_mac_address": "a0:36:9f:2c:e8:80", "mtu": 9000}, {"id": "interface1", "type": "phy", "ethernet_mac_address": "a0:36:9f:2c:e8:81", "mtu": 9000}, {"id": "bond0", "type": "bond", "bond_links": ["interface0", "interface1"], "ethernet_mac_address": "a0:36:9f:2c:e8:82", "bond_mode": "802.3ad", "bond_xmit_hash_policy": "layer3+4", "bond_miimon": 100}, {"id": "vlan0", "type": "vlan", "vlan_link": "bond0", "vlan_id": 101, "vlan_mac_address": "a0:36:9f:2c:e8:80", "vif_id": "e1c90e9f-eafc-4e2d-8ec9-58b91cebb53f"}], "networks": [{"id": "private-ipv4", "type": "ipv4", "link": "interface0", "ip_address": "10.184.0.244", "netmask": "255.255.240.0", "routes": [{"network": "10.0.0.0", "netmask": "255.0.0.0", "gateway": "11.0.0.1"}, {"network": "0.0.0.0", "netmask": "0.0.0.0", "gateway": "23.253.157.1"}], "network_id": "da5bb487-5193-4a65-a3df-4a0055a8c0d7"}, {"id": "private-ipv4", "type": "ipv6", "link": "interface0", "ip_address": "2001:cdba::3257:9652/24", "routes": [{"network": "::", "netmask": "::", "gateway": "fd00::1"}, {"network": "::", "netmask": "ffff:ffff:ffff::", "gateway": "fd00::1:1"}], "network_id": "da5bb487-5193-4a65-a3df-4a0055a8c0d8"}, {"id": "publicnet-ipv4", "type": "ipv4", "link": "vlan0", "ip_address": "23.253.157.244", "netmask": "255.255.255.0", "dns_nameservers": ["69.20.0.164", "69.20.0.196"], "routes": [{"network": "0.0.0.0", "netmask": "0.0.0.0", "gateway": "23.253.157.1"}], "network_id": "62611d6f-66cb-4270-8b1f-503ef0dd4736"}], "services": [{"type": "dns", "address": "8.8.8.8"}, {"type": "dns", "address": "8.8.4.4"}]}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32", "rel": "self"}, {"href": "http://localhost/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32/ports", "rel": "self"}, {"href": "http://localhost/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32/states", "rel": "self"}, {"href ": "http://localhost/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32/volume", "rel": "self"}, {"href": "http://localhost/nodes/88723186-94e9-45fb-af5c-7b5f5ca91b32/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_no_path [0.040322s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data_hidden_in_lower_version [0.042985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5068d3b7-e030-4f8f-92ae-d72328f21fd5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.085337+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-84650d23-ca48-4485-9d40-c9cead5f00e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.66 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.085337+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_remove [0.042709s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byaddress [0.087219s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/52:54:00:cf:2d:31 GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-acb174fb-8ee7-466d-b95c-68b61601da6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for port_uuid: 52:54:00:cf:2d:31\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestDelete.test_delete_by_name [0.083987s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/CUSTOM_DT1 GOT Response: 204 No Content Openstack-Request-Id: req-491036fe-a580-49d9-a6ef-605dac66b204 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_success [0.040694s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_replace [0.047450s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestDelete.test_delete_by_name_non_existent [0.071742s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/blah GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-70f9bee4-ad7b-46cf-92ab-9c57a6fd8599 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Runbook blah could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_byid [0.093713s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 204 No Content Openstack-Request-Id: req-547c686b-b1d1-4ad1-97cc-bbbc6c45251a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_similar_subpath [0.042730s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestDelete.test_delete_by_uuid [0.077793s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/f65fa190-1062-4a4a-87d5-32ad1c5ac142 GOT Response: 204 No Content Openstack-Request-Id: req-87a7d1db-9d69-4b31-961f-8704f2e6b5eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_subpath_success [0.041858s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_success [0.022927s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_node_locked [0.114783s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-e4af6fd8-93b6-4626-88c4-87824c72069d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_similar_subpath [0.019304s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_subpath_success [0.018036s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestDelete.test_delete_invalid_api_version [0.060743s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/e6fa82be-2e2b-474b-a83d-1a1a71f19420 GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow runbooks\"}"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_portgroups_subresource_delete [0.051586s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/d7773cc8-9b09-47c2-b7b3-bc6a339c7b75 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-27ce0b1b-2a05-47ad-a3a0-b14cfa53b533 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestDelete.test_delete_old_api_version [0.057388s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/CUSTOM_DT1 GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow runbooks\"}"} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup [0.052795s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-1c41eb7f-6c3b-4f36-9d79-7088413c2a3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-44436e27-5116-46c7-b3f1-465b4452288f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_already_exist [0.048716s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-e01ee959-d46c-4abb-a7d3-37764ee8cdfb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:06.470155+00:00", "updated_at": null, "address": "aa:aa:aa:11:22:33", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} POST /v1/portgroups WITH {'uuid': '5b6d54b5-52b2-49f6-a6c6-742136834651', 'name': '9e1cf3d4-7af8-4893-9118-b0d9fcdac728', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-d57dda6a-fa38-4c9a-99d3-98b1ae2fbf65 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A portgroup with MAC address aa:aa:aa:11:22:33 already exists.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_collection_links [0.080533s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-db7d5110-7779-4018-ad95-427677ed906a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "7171fb13-c29b-4438-893e-a6af606e0230", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/7171fb13-c29b-4438-893e-a6af606e0230", "rel": "self"}, {"href": "http://localhost/runbooks/7171fb13-c29b-4438-893e-a6af606e0230", "rel": "bookmark"}]}, {"uuid": "b16ef103-7734-42a3-91a1-1fbe483b5205", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/b16ef103-7734-42a3-91a1-1fbe483b5205", "rel": "self"}, {"href": "http://localhost/runbooks/b16ef103-7734-42a3-91a1-1fbe483b5205", "rel": "bookmark"}]}, {"uuid": "8a4e3b41-c0ce-4469-afef-ebf2f2c7fe7f", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/8a4e3b41-c0ce-4469-afef-ebf2f2c7fe7f", "rel": "self"}, {"href": "http://localhost/runbooks/8a4e3b41-c0ce-4469-afef-ebf2f2c7fe7f", "rel": "bookmark"}]}], "next": "http://localhost/v1/runbooks?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=8a4e3b41-c0ce-4469-afef-ebf2f2c7fe7f"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_hidden_in_lower_version [0.422140s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-980e18ca-d066-4857-83de-0ef1fc4efc6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.486461+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-182d5a2e-b34b-48d9-ad77-13cc3598d102 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.486461+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_upd ated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_normalized [0.050167s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'AA:BB:CC:DD:EE:FF', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-70c45cde-fe86-4711-999b-f7b72aaba574 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:06.520827+00:00", "updated_at": null, "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-33727c19-0583-4340-a410-6c6a7f8db06d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:06.520827+00:00", "updated_at": null, "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_default_mode [0.043127s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-5229cd2e-676a-422f-b94b-cb687a09de27 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:06.571462+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_collection_links_custom_fields [0.076321s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?fields=uuid,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-77d1a6c1-d95c-4171-863e-5a97a22517a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "0d1ecd72-0f9b-4e73-a847-d143cec48cbf", "links": [{"href": "http://localhost/v1/runbooks/0d1ecd72-0f9b-4e73-a847-d143cec48cbf", "rel": "self"}, {"href": "http://localhost/runbooks/0d1ecd72-0f9b-4e73-a847-d143cec48cbf", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "216f6e0f-7789-4ef4-b2c6-dd312baed03a", "links": [{"href": "http://localhost/v1/runbooks/216f6e0f-7789-4ef4-b2c6-dd312baed03a", "rel": "self"}, {"href": "http://localhost/runbooks/216f6e0f-7789-4ef4-b2c6-dd312baed03a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "9530cd25-cf33-47f9-aeb3-3c47e160cd38", "links": [{"href": "http://localhost/v1/runbooks/9530cd25-cf33-47f9-aeb3-3c47e160cd38", "rel": "self"}, {"href": "http://localhost/runbooks/9530cd25-cf33-47f9-aeb3-3c47e160cd38", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}], "next": "http://localhost/v1/runbooks?sort_key=id&sort_dir=asc&fields=uuid,steps&limit=3&marker=9530cd25-cf33-47f9-aeb3-3c47e160cd38"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_null_field [0.077049s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cc928a2a-e049-43ac-9aea-3f5e25671f33 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.579008+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_doesnt_contain_id [0.059202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {'foo': 123}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-a5b6429a-d212-493e-b4b7-06f309915059 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:06.616481+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"foo": 123}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1a9b497c-cff0-43d9-9f1e-cc53005f8668 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:06.616481+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"foo": 123}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_success [0.295404s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_collection_links_default_limit [0.073938s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ed1d5d23-e614-496c-84fd-bdde944e5f9e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "58a21172-ebba-4ca2-b3bd-3e1eea3f156d", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/58a21172-ebba-4ca2-b3bd-3e1eea3f156d", "rel": "self"}, {"href": "http://localhost/runbooks/58a21172-ebba-4ca2-b3bd-3e1eea3f156d", "rel": "bookmark"}]}, {"uuid": "c0c933d3-485f-4607-b0b1-0f752828074d", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/c0c933d3-485f-4607-b0b1-0f752828074d", "rel": "self"}, {"href": "http://localhost/runbooks/c0c933d3-485f-4607-b0b1-0f752828074d", "rel": "bookmark"}]}, {"uuid": "567d56a7-f6ae-4019-802d-74054b0b8f59", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/567d56a7-f6ae-4019-802d-74054b0b8f59", "rel": "self"}, {"href": "http://localhost/runbooks/567d56a7-f6ae-4019-802d-74054b0b8f59", "rel": "bookmark"}]}], "next": "http://localhost/v1/runbooks?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=567d56a7-f6ae-4019-802d-74054b0b8f59"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_update_changed_fields [0.022080s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_present [0.079074s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-43d23ba8-4c56-4fda-9ea8-c1d9314dfb28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.659131+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": "akindofmagic", "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_validate_allowed_fields [0.018773s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patched_validate_with_schema [0.021747s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_query [0.062749s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c63de568-cc73-4a2f-a123-bc18f7c2234e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "e824efef-904e-402a-b1a9-786b38cefcec", "created_at": "2025-11-11T18:58:06.705677+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/e824efef-904e-402a-b1a9-786b38cefcec", "rel": "self"}, {"href": "http://localhost/runbooks/e824efef-904e-402a-b1a9-786b38cefcec", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_sanitize_dict [0.018090s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_error [0.086008s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-d174b28b-3b18-46ed-b569-8d5ae0c422bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_limit [0.019048s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_sort_dir [0.018811s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected [0.092834s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ad9f6e83-b1de-478a-92d2-a7a4a7ef86ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "f3af0ca6-2983-4f9b-86e6-21277560be76", "created_at": "2025-11-11T18:58:06.736480+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": true, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76", "rel": "self"}, {"href": "http://localhost/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76/ports", "rel": "self"}, {"href": "http://localhost/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76/states", "rel": "self"}, {"href": "http://localhost/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76/volume", "rel": "self"}, {"href": "http://localhost/nodes/f3af0ca6-2983-4f9b-86e6-21277560be76/volume", "rel": "bookmark"}]} GET /v1/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-25bb2b85-b854-4101-b02b-b1f52c5f999b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "b5e6b449-6ef8-498c-a7d9-56ae6e21370d", "created_at": "2025-11-11T18:58:06.759439+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d", "rel": "self"}, {"href": "http://localhost/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d/ports", "rel": "self"}, {"href": "http://localhost/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d/states", "rel": "self"}, {"href": "http://localhost/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d/volume", "rel": "self"}, {"href": "http://localhost/nodes/b5e6b449-6ef8-498c-a7d9-56ae6e21370d/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve [0.019882s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_query_false [0.077252s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-de08293c-a213-45b8-86d9-f44ebcbd6765 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "94b5de95-d1f5-4a5b-b504-a85de5115b74", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/94b5de95-d1f5-4a5b-b504-a85de5115b74", "rel": "self"}, {"href": "http://localhost/runbooks/94b5de95-d1f5-4a5b-b504-a85de5115b74", "rel": "bookmark"}]}]} GET /v1/runbooks?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-151f6caf-9f86-44fd-9e46-34f397f379d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "94b5de95-d1f5-4a5b-b504-a85de5115b74", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/94b5de95-d1f5-4a5b-b504-a85de5115b74", "rel": "self"}, {"href": "http://localhost/runbooks/94b5de95-d1f5-4a5b-b504-a85de5115b74", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve_first_fail [0.022345s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_node_policy_and_retrieve_no_node [0.021229s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_generate_uuid [0.111470s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44 Openstack-Request-Id: req-bedc86dd-da8f-4ebd-9e6d-977eee2f76df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7aef05de-6a86-4b03-8ed7-b0baabafef44", "created_at": "2025-11-11T18:58:06.810987+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44", "rel": "self"}, {"href": "http://localhost/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44/ports", "rel": "self"}, {"href": "http://localhost/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44/ports", "rel": "bookmark"}]} GET /v1/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-584a82c0-7ff7-40b0-8ba1-fdb5aaf854bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7aef05de-6a86-4b03-8ed7-b0baabafef44", "created_at": "2025-11-11T18:58:06.810987+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44", "rel": "self"}, {"href": "http://localhost/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44/ports", "rel": "self"}, {"href": "http://localhost/portgroups/7aef05de-6a86-4b03-8ed7-b0baabafef44/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_post_name [0.020701s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_hidden_in_lower_version [0.082258s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3353655b-299e-4227-a4e8-b05dd7c6cb4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.835179+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1573d3a4-ef10-47d4-a85a-52b136d56147 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.835179+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reserv ation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_sort_key_allowed [0.069802s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?sort_key=name&detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-af2fc5e7-1424-4af9-9dda-f731643acff5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "1ec63532-dd50-42b7-8efa-7b3c436bf75d", "created_at": "2025-11-11T18:58:06.852295+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/1ec63532-dd50-42b7-8efa-7b3c436bf75d", "rel": "self"}, {"href": "http://localhost/runbooks/1ec63532-dd50-42b7-8efa-7b3c436bf75d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "124f9f24-cb07-4956-aac6-a5cf5088c200", "created_at": "2025-11-11T18:58:06.850779+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/124f9f24-cb07-4956-aac6-a5cf5088c200", "rel": "self"}, {"href": "http://localhost/runbooks/124f9f24-cb07-4956-aac6-a5cf5088c200", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "6f5483dc-7489-435c-b9ac-ce81078d56f3", "created_at": "2025-11-11T18:58:06.849063+00:00", "updated_at": null, "name": "CUSTOM_DT3", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/6f5483dc-7489-435c-b9ac-ce81078d56f3", "rel": "self"}, {"href": "http://localhost/runbooks/6f5483dc-7489-435c-b9ac-ce81078d56f3", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_pre_name [0.019626s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_name_no_logical_name [0.022989s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_uuid_no_logical_name [0.020860s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_internal_info_not_allowed [0.075198s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'internal_info': 'info'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bd96b57c-bd7a-4ac1-9465-1c4a2e183ab7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for portgroup: Additional properties are not allowed ('internal_info' was unexpected)\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_using_query_and_fields [0.042884s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e0cb9de9-0ac8-4c40-a66b-548466b218c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Can not specify ?detail=True and fields in the same request.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_name [0.021645s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_reason_hidden_in_lower_version [0.087660s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-38230011-0c3c-4a23-9f8c-6fa34d7f9a5d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.930503+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cf7c45ce-dc21-43a6-a40e-269301f00ded X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:06.930503+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reserv ation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_uuid [0.021595s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_invalid_name [0.029527s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_using_query_false_and_fields [0.068348s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?detail=False&fields=steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1f428802-7e4f-4a06-ab48-ccfcd537ecfe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"links": [{"href": "http://localhost/v1/runbooks/c1134e73-5783-4eb1-a6d7-c865ef0fdbae", "rel": "self"}, {"href": "http://localhost/runbooks/c1134e73-5783-4eb1-a6d7-c865ef0fdbae", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_addr_format [0.107301s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'invalid-format', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-16eb99e9-580e-44ff-8ada-3f564cc4d7ad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_is_valid_node_name [0.044571s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_with_reason [0.085817s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-72897320-f4d1-46af-a825-fc4de624d9d8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.026635+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": true, "protected_reason": "reason!", "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_api_version [0.034852s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f6e65a16-b5a4-4d9b-b834-f9bec139e7d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.14 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_empty [0.062079s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cd80a056-2536-4629-8b47-d5433e8a89fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": []} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_populate_node_uuid [0.044612s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_node_uuid_format [0.033251s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': 'invalid-format', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-757e5bd6-d495-46d5-a05b-eb05a19dd031 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for node_uuid: invalid-format\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid [0.030363s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_get_all_invalid_api_version [0.049233s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow runbooks\"}"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid_not_found [0.021118s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_old_api_version [0.046569s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'mode': '802.3ad'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-bebbe9b7-ad16-40fa-ae05-1eda5c4c5801 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'properties': {'bond_prop': 123}} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-05a8bf7a-0175-47e3-a61e-11d26145d381 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired [0.095971s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e85463ad-ec0f-450a-990d-f9152722bdd9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "3d635afc-23e6-489c-bef3-d139986f5d8e", "created_at": "2025-11-11T18:58:07.118702+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": true, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e", "rel": "self"}, {"href": "http://localhost/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e/ports", "rel": "self"}, {"href": "http://localhost/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e/states", "rel": "self"}, {"href": "http://localhost/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e/volume", "rel": "self"}, {"href": "http://localhost/nodes/3d635afc-23e6-489c-bef3-d139986f5d8e/volume", "rel": "bookmark"}]} GET /v1/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-21d9bd31-05ca-4304-993c-de70c298a59f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "b82aa81f-fb12-44d8-92e5-1bc8e442387c", "created_at": "2025-11-11T18:58:07.145115+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c", "rel": "self"}, {"href": "http://localhost/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c/ports", "rel": "self"}, {"href": "http://localhost/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c/states", "rel": "self"}, {"href": "http://localhost/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c/volume", "rel": "self"}, {"href": "http://localhost/nodes/b82aa81f-fb12-44d8-92e5-1bc8e442387c/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id [0.020813s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id_not_found [0.020465s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_properties [0.042985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True, 'mode': '802.3ad', 'properties': {'bond_prop': 123}} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-745304c1-37ab-4bf4-a95d-af1d6641bee2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:07.192191+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "802.3ad", "name": "fooname", "properties": {"bond_prop": 123}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_get_collection_custom_fields [0.076610s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?fields=uuid,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2b39d44c-844d-489a-babc-20a421916a19 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "754c8728-f1b0-48b0-8da7-326d6218cca9", "links": [{"href": "http://localhost/v1/runbooks/754c8728-f1b0-48b0-8da7-326d6218cca9", "rel": "self"}, {"href": "http://localhost/runbooks/754c8728-f1b0-48b0-8da7-326d6218cca9", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "1a7a64ca-74c6-4c28-835a-994266d62954", "links": [{"href": "http://localhost/v1/runbooks/1a7a64ca-74c6-4c28-835a-994266d62954", "rel": "self"}, {"href": "http://localhost/runbooks/1a7a64ca-74c6-4c28-835a-994266d62954", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "0ab7b539-ab07-4e16-a07c-2a9ecf526105", "links": [{"href": "http://localhost/v1/runbooks/0ab7b539-ab07-4e16-a07c-2a9ecf526105", "rel": "self"}, {"href": "http://localhost/runbooks/0ab7b539-ab07-4e16-a07c-2a9ecf526105", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_invalid [0.037253s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'aa:bb_cc', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ca989952-8732-482d-badb-7f59803aabda X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create portgroup with invalid name 'aa:bb_cc'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector [0.053755s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-1f4d9a98-0f53-4565-ae5c-4fc153f0794a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fe9dde98-f69e-4508-9a0f-35979e85870f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_hidden_in_lower_version [0.096529s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-180bb5c0-2398-4852-aeaa-7548d1561ada X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.223856+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d58a0d39-9c5d-4026-b4aa-556fd02a8565 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.223856+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected ": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_ok [0.052412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'foo', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': 'AA:AA:AA:11:22:33', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-5d6d7ac2-dcd1-4f04-8b5e-8af5cfdef650 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:07.272735+00:00", "updated_at": null, "address": "aa:aa:aa:11:22:33", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "foo", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-999487e7-b5f7-476d-b215-22a65bedc3d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:07.272735+00:00", "updated_at": null, "address": "aa:aa:aa:11:22:33", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "foo", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_get_collection_pagination_no_uuid [0.071476s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?fields=name&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9af46558-06ea-4323-ab77-078b3d488ecd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/2a5a54b5-845f-4b90-ba64-45717bdae6ba", "rel": "self"}, {"href": "http://localhost/runbooks/2a5a54b5-845f-4b90-ba64-45717bdae6ba", "rel": "bookmark"}]}, {"name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/49c0fb64-3822-414e-9b6e-fa7a861526b1", "rel": "self"}, {"href": "http://localhost/runbooks/49c0fb64-3822-414e-9b6e-fa7a861526b1", "rel": "bookmark"}]}], "next": "http://localhost/v1/runbooks?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=49c0fb64-3822-414e-9b6e-fa7a861526b1"} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_address [0.051560s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-a3cc0024-8a31-470c-84ae-2966ff171e37 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:07.327140+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7097f01e-fa1c-47a7-8900-a0d6fa8a9109 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:07.327140+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_doesnt_contain_id [0.108007s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {'foo': 123}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-47c02060-a5f6-49f9-870a-620a628b6a30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:07.321320+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {"foo": 123}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ffd0bdba-2302-4e53-bf08-c59f5f54d091 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:07.321320+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {"foo": 123}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_reason_hidden_in_lower_version [0.097486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-303cbc85-5a8c-4069-b9a1-7124cddbad44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.329865+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6b96e819-5d82-470e-a1d8-427eb702277e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.329865+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected ": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_get_custom_fields_invalid_fields [0.063393s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/9934948f-7b6d-4b8b-bff2-af223dc98f63?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f1d2371a-e465-4528-84a4-254d0c147d3a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_mandatory_field_node_uuid [0.057910s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a7a3e0e6-ae6c-4b00-9f27-a15178a12d7b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for portgroup: 'node_uuid' is a required property\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_error [0.052915s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-0accfeb1-abf9-495b-9b0e-8ffb6c2ba7e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_get_one [0.070516s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/cbbd3ae9-5664-4417-9b25-4460c8086725 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0ae54240-5bc2-4a68-931f-d7572d32279b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "cbbd3ae9-5664-4417-9b25-4460c8086725", "created_at": "2025-11-11T18:58:07.433003+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/cbbd3ae9-5664-4417-9b25-4460c8086725", "rel": "self"}, {"href": "http://localhost/runbooks/cbbd3ae9-5664-4417-9b25-4460c8086725", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_generate_uuid [0.048111s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/faff8d4b-7665-4d35-952c-839ef11a42ab Openstack-Request-Id: req-90e8931d-3c51-47ea-a22a-91630fed41c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "faff8d4b-7665-4d35-952c-839ef11a42ab", "created_at": "2025-11-11T18:58:07.446446+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/faff8d4b-7665-4d35-952c-839ef11a42ab", "rel": "self"}, {"href": "http://localhost/volume/connectors/faff8d4b-7665-4d35-952c-839ef11a42ab", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/connectors/faff8d4b-7665-4d35-952c-839ef11a42ab WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8da8dc32-bd03-4b61-b4ee-8497d619f89e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "faff8d4b-7665-4d35-952c-839ef11a42ab", "created_at": "2025-11-11T18:58:07.446446+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/faff8d4b-7665-4d35-952c-839ef11a42ab", "rel": "self"}, {"href": "http://localhost/volume/connectors/faff8d4b-7665-4d35-952c-839ef11a42ab", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_with_reason [0.088657s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-51594a43-2f37-461e-8fad-38edf2b50c8f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.442585+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": true, "retired_reason": "warranty expired", "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_node_uuid_not_found [0.074165s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e790041f-36fb-4f64-8f2e-47b06823c4b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_api_version [0.031064s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_get_one_custom_fields [0.070526s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/b767a569-1d00-4005-ad04-9349b4596e51?fields=name,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cbb3eff5-2a64-4b9e-9d81-dac70f8efc90 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/b767a569-1d00-4005-ad04-9349b4596e51", "rel": "self"}, {"href": "http://localhost/runbooks/b767a569-1d00-4005-ad04-9349b4596e51", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot [0.054525s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/9998657e-b206-402e-8ee5-7afed1a06e83 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3e861c39-b899-44f7-ad5c-13c322c60f28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "9998657e-b206-402e-8ee5-7afed1a06e83", "created_at": "2025-11-11T18:58:07.507581+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": "uefi", "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": true, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/9998657e-b206-402e-8ee5-7afed1a06e83", "rel": "self"}, {"href": "http://localhost/nodes/9998657e-b206-402e-8ee5-7afed1a06e83", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9998657e-b206-402e-8ee5-7afed1a06e83/ports", "rel": "self"}, {"href": "http://localhost/nodes/9998657e-b206-402e-8ee5-7afed1a06e83/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9998657e-b206-402e-8ee5-7afed1a06e83/states", "rel": "self"}, {"href": "http://localhost/nodes/9998657e-b206-402e-8ee5-7afed1a06e83/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9998657e-b206-402e-8ee5-7afed1a06e83/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9998657e-b206-402e-8ee5-7afed1a06e83/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9998657e-b206-402e-8ee5-7afed1a06e83/volume", "rel": "self"}, {"href": "http://localhost/nodes/9998657e-b206-402e-8ee5-7afed1a06e83/volume", "rel": "bookmark"}]} GET /v1/nodes/e3e77261-0121-4f18-b29e-967867258e04 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5a56ac60-9dbb-41f8-a2bc-c68cb08d2c85 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "e3e77261-0121-4f18-b29e-967867258e04", "created_at": "2025-11-11T18:58:07.519931+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": "uefi", "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {} , "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": false, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/e3e77261-0121-4f18-b29e-967867258e04", "rel": "self"}, {"href": "http://localhost/nodes/e3e77261-0121-4f18-b29e-967867258e04", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e3e77261-0121-4f18-b29e-967867258e04/ports", "rel": "self"}, {"href": "http://localhost/nodes/e3e77261-0121-4f18-b29e-967867258e04/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e3e77261-0121-4f18-b29e-967867258e04/states", "rel": "self"}, {"href": "http://localhost/nodes/e3e77261-0121-4f18-b29e-967867258e04/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e3e77261-0121-4f18-b29e-967867258e04/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e3e77261-0121-4f18-b29e-967867258e04/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e3e77261-0121-4f18-b29e-967867258e04/volume", "rel": "self"}, {"href": "http://localhost/nodes/e3e77261-0121-4f18-b29e-967867258e04/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot_hidden_in_lower_version [0.045534s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-033d6473-ca0b-4740-9a07-25490b63069d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.558776+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e4524a9-47a4-406d-b236-ce0e62149e4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.558776+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_v123 [0.111966s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-a5e3472a-9b15-4ee2-b0e4-cf39a8239951 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.23 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-58b4eaf2-a65b-49a2-841e-64cda202b92e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.23 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_get_one_invalid_api_version [0.081070s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/9dada1e5-b6ff-4bfd-b8c3-e71de6b3f308 WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow runbooks\"}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_node_uuid_format [0.137642s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': 123} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-24b6bede-32d0-4cab-9325-06c0bd4504be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 123 is not of type 'string'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states [0.051278s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-223f265a-5e18-4398-883b-5052896ce7e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"console_enabled": false, "last_error": "fake-error", "power_state": "fake-state", "provision_state": "fake-state", "target_power_state": "fake-state", "target_provision_state": "fake-state", "provision_updated_at": "2000-01-01T00:00:00+00:00"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_connector_id [0.032063s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-198dd6e4-8dfb-4d11-9322-1d2e2c4d707b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'connector_id' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_links [0.072673s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/a1342404-900a-4543-b20b-486bc46dedb0 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-422d3e2e-ed03-4640-b59e-8d04caaa264e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a1342404-900a-4543-b20b-486bc46dedb0", "created_at": "2025-11-11T18:58:07.644446+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/a1342404-900a-4543-b20b-486bc46dedb0", "rel": "self"}, {"href": "http://localhost/runbooks/a1342404-900a-4543-b20b-486bc46dedb0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/a1342404-900a-4543-b20b-486bc46dedb0 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-83476d31-b714-4b21-bfd0-bf8d673e372f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a1342404-900a-4543-b20b-486bc46dedb0", "created_at": "2025-11-11T18:58:07.644446+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/a1342404-900a-4543-b20b-486bc46dedb0", "rel": "self"}, {"href": "http://localhost/runbooks/a1342404-900a-4543-b20b-486bc46dedb0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /runbooks/a1342404-900a-4543-b20b-486bc46dedb0 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bc605f75-33e7-4e7b-8efa-21fcb79fc707 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a1342404-900a-4543-b20b-486bc46dedb0", "created_at": "2025-11-11T18:58:07.644446+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/a1342404-900a-4543-b20b-486bc46dedb0", "rel": "self"}, {"href": "http://localhost/runbooks/a1342404-900a-4543-b20b-486bc46dedb0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_node_uuid [0.037894s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c671c587-ea61-4579-8a46-0c7ff672e6d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'node_uuid' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode [0.066431s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/05f9e9a2-99a3-4c5f-a41b-0b454562d456/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b8876bb2-c05e-4e59-ae3d-ae97581ac2cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": "bios", "secure_boot": null} GET /v1/nodes/d30f066f-959e-4bc4-9639-e2a1081dc2b7/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-55dd31c5-873e-4a6b-9673-3976d095fd4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": "uefi", "secure_boot": null} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_valid_extra [0.114369s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-3673bdcd-1081-4b4f-89f8-f6c930c64bd8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:07.669952+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68d639ff-28e5-4ddc-9f99-37c098364535 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:07.669952+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_type [0.033641s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-63f46f8d-3ba5-4653-a8d7-328bd25a1c0e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for connector: 'type' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_many [0.083928s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8ef3365-b83d-42b6-938a-24f59bf3eed7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "d88292e9-f85c-44f3-8540-c594956975ae", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/d88292e9-f85c-44f3-8540-c594956975ae", "rel": "self"}, {"href": "http://localhost/runbooks/d88292e9-f85c-44f3-8540-c594956975ae", "rel": "bookmark"}]}, {"uuid": "69d3bf05-8bbf-4233-8b9c-e4b394f01c84", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/69d3bf05-8bbf-4233-8b9c-e4b394f01c84", "rel": "self"}, {"href": "http://localhost/runbooks/69d3bf05-8bbf-4233-8b9c-e4b394f01c84", "rel": "bookmark"}]}, {"uuid": "7dfb35b0-c83d-4944-a239-2a993e917646", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/7dfb35b0-c83d-4944-a239-2a993e917646", "rel": "self"}, {"href": "http://localhost/runbooks/7dfb35b0-c83d-4944-a239-2a993e917646", "rel": "bookmark"}]}, {"uuid": "9293a2a6-c353-438b-bc60-aef4a0d3c720", "name": "CUSTOM_DT3", "links": [{"href": "http://localhost/v1/runbooks/9293a2a6-c353-438b-bc60-aef4a0d3c720", "rel": "self"}, {"href": "http://localhost/runbooks/9293a2a6-c353-438b-bc60-aef4a0d3c720", "rel": "bookmark"}]}, {"uuid": "65e48653-7fdb-4bae-a6ed-9e9a8eb6a411", "name": "CUSTOM_DT4", "links": [{"href": "http://localhost/v1/runbooks/65e48653-7fdb-4bae-a6ed-9e9a8eb6a411", "rel": "self"}, {"href": "http://localhost/runbooks/65e48653-7fdb-4bae-a6ed-9e9a8eb6a411", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_node_uuid_not_found [0.033769s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7bdd6f98-b21c-42bd-818d-5194638848d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid input for field/attribute node_uuid. Value: '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'. \", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode_hidden_in_lower_version [0.084388s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-15349b15-3d7b-4b89-aeb1-4fee20c91ef9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c988d9ac-178f-4822-aa13-d78ad2ef7c23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_with_hyphens_delimiter [0.077353s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52-54-00-cf-2d-31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-49a4e2d1-e646-4f17-ab24-dab051f75ec6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: 52-54-00-cf-2d-31\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_type_value_already_exist [0.048876s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'test-connector-id-456', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-cf7a4578-8f47-4a08-9be0-7345a50f0437 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:07.804292+00:00", "updated_at": null, "connector_id": "test-connector-id-456", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} POST /v1/volume/connectors WITH {'uuid': '57b4757d-4ffe-4faa-801f-db42c033f919', 'type': 'iqn', 'connector_id': 'test-connector-id-456', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-c617e4a6-c299-4ce4-9edb-04448cf01fb3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume connector with type iqn and connector ID test-connector-id-456 already exists.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_one [0.067919s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ed3aa1ac-f00a-45d9-8100-0dc39f54c626 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "90c70f55-76a6-4437-92a0-4603a69b3dfd", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/90c70f55-76a6-4437-92a0-4603a69b3dfd", "rel": "self"}, {"href": "http://localhost/runbooks/90c70f55-76a6-4437-92a0-4603a69b3dfd", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_by_name [0.051749s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/eggs/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9491a8f5-7cec-4ac1-b2e8-61332398e646 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"console_enabled": false, "last_error": "fake-error", "power_state": "fake-state", "provision_state": "fake-state", "target_power_state": "fake-state", "target_provision_state": "fake-state", "provision_updated_at": "1971-03-09T00:00:00+00:00"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_valid_extra [0.050439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-77b23518-59e4-428a-b916-d44b78bd4780 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:07.851341+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e42e045b-3eda-441b-85d8-39639376e24a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:07.851341+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_field_hidden_in_lower_version [0.044889s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fc5b9d6e-153f-4061-83a0-d56e0f7fadf3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.8 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.879349+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9786cce0-aff1-4043-98d6-d99913e493a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.14 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:07.879349+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_node_uuid_to_node_id_mapping [0.100202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'uuid': '6eb02b44-18a3-4659-8c0b-8d2802581ae4', 'name': 'fooname', 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'address': '52:54:00:cf:2d:31', 'extra': {}, 'standalone_ports_supported': True} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 Openstack-Request-Id: req-df0bb6c0-43c1-415e-b925-fc7f4194fa75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:07.884436+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_sensitive_data_masked [0.069553s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/712aedb8-9756-4405-8dbc-afec6f59ec66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c0271549-c9c2-4a92-963a-30eb1e534508 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "712aedb8-9756-4405-8dbc-afec6f59ec66", "created_at": "2025-11-11T18:58:07.881034+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/712aedb8-9756-4405-8dbc-afec6f59ec66", "rel": "self"}, {"href": "http://localhost/runbooks/712aedb8-9756-4405-8dbc-afec6f59ec66", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": [], "password": "******"}, "order": 1}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_raid [0.039700s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c709063e-86ac-406d-9263-ee6a017aad55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {"console_enabled": false, "last_error": "fake-error", "power_state": "fake-state", "provision_state": "fake-state", "target_power_state": "fake-state", "target_provision_state": "fake-state", "provision_updated_at": "2000-01-01T00:00:00+00:00", "raid_config": {"foo": "bar"}, "target_raid_config": {"foo": "bar"}} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_sort_key [0.075803s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8f6f068a-5caf-4ed4-ad93-9973815c2880 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "2d1a2f0d-2b18-4a77-b579-d5dd43bd5436", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/2d1a2f0d-2b18-4a77-b579-d5dd43bd5436", "rel": "self"}, {"href": "http://localhost/runbooks/2d1a2f0d-2b18-4a77-b579-d5dd43bd5436", "rel": "bookmark"}]}, {"uuid": "46f70f32-dcdb-40ea-9dfe-344a030af5ba", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/46f70f32-dcdb-40ea-9dfe-344a030af5ba", "rel": "self"}, {"href": "http://localhost/runbooks/46f70f32-dcdb-40ea-9dfe-344a030af5ba", "rel": "bookmark"}]}, {"uuid": "51104f01-f793-4c4a-86bf-07fda3eb980c", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/51104f01-f793-4c4a-86bf-07fda3eb980c", "rel": "self"}, {"href": "http://localhost/runbooks/51104f01-f793-4c4a-86bf-07fda3eb980c", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_secure_boot [0.042687s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/990bfe17-45f0-4be2-bc60-d28c54bd3f73/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d5a6577c-45fd-4816-a901-06b0623cdb20 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": "uefi", "secure_boot": true} GET /v1/nodes/0635892f-e9b1-4b3a-a87a-e745b984fc83/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c6632dbd-4f1e-4190-8143-c3da5beea5fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": "uefi", "secure_boot": false} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_node_uuid_to_node_id_mapping [0.117180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'type': 'iqn', 'connector_id': 'iqn.2012-06.com.example:initiator', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-76c9cddc-d07d-4ccb-b7b8-bf8093db7e8a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:07.968452+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_empty [0.100625s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-75b242ff-a952-4d25-8698-20370973203d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"shards": []} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_secure_boot_hidden_in_lower_version [0.041518s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5ce21168-092c-44d2-b560-e38c360ee18c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.74 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ce8ef004-b1cb-4baf-854e-9451d78b4035 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_fail_get_one [0.028333s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards/shard1 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-107fd0e2-ca53-4517-b9d0-2047a57710c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_fail_post [0.024276s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/shards WITH {} GOT Response: 405 Method Not Allowed Allow: GET Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_sort_key_allowed [0.073792s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?sort_key=name&detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8d05a3ff-46ab-45a4-b499-30095c6e322e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "afd6e5ce-7d40-41b1-a1ff-1e09f058a9b6", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/afd6e5ce-7d40-41b1-a1ff-1e09f058a9b6", "rel": "self"}, {"href": "http://localhost/runbooks/afd6e5ce-7d40-41b1-a1ff-1e09f058a9b6", "rel": "bookmark"}]}, {"uuid": "f41046b0-499d-4f07-ae60-dd7e16f1b640", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/f41046b0-499d-4f07-ae60-dd7e16f1b640", "rel": "self"}, {"href": "http://localhost/runbooks/f41046b0-499d-4f07-ae60-dd7e16f1b640", "rel": "bookmark"}]}, {"uuid": "27ce3b3a-3539-43f3-b85b-677d281d0fd4", "name": "CUSTOM_DT3", "links": [{"href": "http://localhost/v1/runbooks/27ce3b3a-3539-43f3-b85b-677d281d0fd4", "rel": "self"}, {"href": "http://localhost/runbooks/27ce3b3a-3539-43f3-b85b-677d281d0fd4", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_storage_interface_hidden_in_lower_version [0.046002s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68305147-6f52-43c6-9194-9e742deca626 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:08.051016+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f95de214-9d08-495d-b67a-07ba7973608f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:08.051016+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", " rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_fail_put [0.024623s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/shards WITH {} GOT Response: 405 Method Not Allowed Allow: GET Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links [0.108736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-69b10970-a3da-4268-8e31-55f2b6fbfece X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "fdcfa181-fa2b-4e4e-8fc8-042429cb16cd", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/fdcfa181-fa2b-4e4e-8fc8-042429cb16cd", "rel": "self"}, {"href": "http://localhost/volume/targets/fdcfa181-fa2b-4e4e-8fc8-042429cb16cd", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "13bbe266-abba-4308-90d1-3ea7cb62f1d8", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/13bbe266-abba-4308-90d1-3ea7cb62f1d8", "rel": "self"}, {"href": "http://localhost/volume/targets/13bbe266-abba-4308-90d1-3ea7cb62f1d8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "5fb51765-3f00-414d-b1f1-71d7f18a7a51", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/5fb51765-3f00-414d-b1f1-71d7f18a7a51", "rel": "self"}, {"href": "http://localhost/volume/targets/5fb51765-3f00-414d-b1f1-71d7f18a7a51", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=uuid,node_uuid,volume_type,boot_index,volume_id&limit=3&marker=5fb51765-3f00-414d-b1f1-71d7f18a7a51"} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_fail_wrong_version [0.026509s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"The API version does not allow shards\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_traits_hidden_in_lower_version [0.046933s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fb9e8c05-b3ed-4524-ba53-f733d03d93b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.36 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:08.099628+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-013cfcb7-2693-4c5e-a59c-9aebfc3fa70d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:08.099628+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes /1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_sort_key_invalid [0.068758s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-08c05ee8-1897-4b32-ab86-550850aae5b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/runbooks?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5bef2162-fa91-486c-bc9f-b48ba1438c7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/runbooks?sort_key=steps WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b36de3ed-019a-4d2f-95f6-ff1a0b33a9c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value steps is an invalid field for sorting\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_one [0.036701s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-14cedd5b-3c7e-4547-9b4a-2ea316e2709f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_multiple_shards [0.050062s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a48c872-5fb1-4d63-8499-6328d7b6e805 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"shards": [{"name": "shard5", "count": 5}, {"name": "shard4", "count": 4}, {"name": "shard3", "count": 3}, {"name": "shard2", "count": 2}, {"name": "shard1", "count": 1}]} {0} ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned [0.042357s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_nodes_but_no_shards [0.034698s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-52629d54-986b-4cbd-a39e-83c3386b19b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"shards": [{"name": "None", "count": 5}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_one_field_specific_santization [0.039272s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=uuid,provision_state,maintenance,instance_uuid,last_error WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c5146e71-a352-4f2f-adc5-4ac758ce1567 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "provision_state": "available", "maintenance": false, "instance_uuid": null, "last_error": "meow", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_custom_fields [0.098121s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e043fcfc-cee4-4800-9799-db3d44917847 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "d25f7539-b92d-4107-a255-8279dbaaab8e", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/d25f7539-b92d-4107-a255-8279dbaaab8e", "rel": "self"}, {"href": "http://localhost/volume/targets/d25f7539-b92d-4107-a255-8279dbaaab8e", "rel": "bookmark"}]}, {"uuid": "2704dec3-4306-4ec2-8600-c1780259a16a", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/2704dec3-4306-4ec2-8600-c1780259a16a", "rel": "self"}, {"href": "http://localhost/volume/targets/2704dec3-4306-4ec2-8600-c1780259a16a", "rel": "bookmark"}]}, {"uuid": "9141209c-883b-4850-9559-2d11b7479d05", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/9141209c-883b-4850-9559-2d11b7479d05", "rel": "self"}, {"href": "http://localhost/volume/targets/9141209c-883b-4850-9559-2d11b7479d05", "rel": "bookmark"}]}], "next": "http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=9141209c-883b-4850-9559-2d11b7479d05"} {0} ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned_in_release_mappings [0.038036s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_one_shard [0.030154s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-16ca1a74-fdf2-4873-bd32-d1e147e30c80 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"shards": [{"name": "shard1", "count": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_alloc_policy_and_retrieve_no_alloc_policy_not_found [0.020079s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_pinned [0.038884s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_no_allocation [0.038647s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_default_limit [0.097668s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8d38c687-ac69-45e8-9c29-7e42295bb9c2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "36e24294-12ff-4862-a5fd-1fc207bbf346", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/36e24294-12ff-4862-a5fd-1fc207bbf346", "rel": "self"}, {"href": "http://localhost/volume/targets/36e24294-12ff-4862-a5fd-1fc207bbf346", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "7adb21d1-a8f0-41b3-b6d9-514d144280bb", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/7adb21d1-a8f0-41b3-b6d9-514d144280bb", "rel": "self"}, {"href": "http://localhost/volume/targets/7adb21d1-a8f0-41b3-b6d9-514d144280bb", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "5fdea015-f1ff-488a-a388-a0281a33d5d7", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/5fdea015-f1ff-488a-a388-a0281a33d5d7", "rel": "self"}, {"href": "http://localhost/volume/targets/5fdea015-f1ff-488a-a388-a0281a33d5d7", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=uuid,node_uuid,volume_type,boot_index,volume_id&limit=3&marker=5fdea015-f1ff-488a-a388-a0281a33d5d7"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_multi [0.049205s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}, {'path': '/extra/foo3', 'value': 'bar3', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-37eae67a-f100-40d1-95b1-3a60b4d4778f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:08.276165+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource [0.109963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-10f93807-6588-4acb-9736-c3a02ced12da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"portgroups": [{"uuid": "ce52f1e5-4e55-45fc-b356-86491cd8b50e", "address": "52:54:00:cf:2d:30", "name": "pg-0", "links": [{"href": "http://localhost/v1/portgroups/ce52f1e5-4e55-45fc-b356-86491cd8b50e", "rel": "self"}, {"href": "http://localhost/portgroups/ce52f1e5-4e55-45fc-b356-86491cd8b50e", "rel": "bookmark"}]}, {"uuid": "7a4be40f-c671-4729-aafa-1d20f7f31061", "address": "52:54:00:cf:2d:31", "name": "pg-1", "links": [{"href": "http://localhost/v1/portgroups/7a4be40f-c671-4729-aafa-1d20f7f31061", "rel": "self"}, {"href": "http://localhost/portgroups/7a4be40f-c671-4729-aafa-1d20f7f31061", "rel": "bookmark"}]}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups?limit=1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c48e30c4-c956-4c86-90ce-6cededdd6ad0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"portgroups": [{"uuid": "ce52f1e5-4e55-45fc-b356-86491cd8b50e", "address": "52:54:00:cf:2d:30", "name": "pg-0", "links": [{"href": "http://localhost/v1/portgroups/ce52f1e5-4e55-45fc-b356-86491cd8b50e", "rel": "self"}, {"href": "http://localhost/portgroups/ce52f1e5-4e55-45fc-b356-86491cd8b50e", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=1&marker=ce52f1e5-4e55-45fc-b356-86491cd8b50e"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_policy_not_found [0.046081s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_id [0.039816s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'value': '1', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-145cc8e6-a625-4ec6-9cbf-bcbac1e54d53 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_link [0.070024s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b619df0c-e35a-4b9e-ab9e-d2f78b6007c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:08.357439+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_node_policy_and_retrieve [0.050747s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_detail [0.091561s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?detail=True&limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd759848-da91-4d31-894b-b8f2ecfce1dc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "6d0ab8f1-bc52-494b-b28f-19e13a8860e6", "created_at": "2025-11-11T18:58:08.346222+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6d0ab8f1-bc52-494b-b28f-19e13a8860e6", "rel": "self"}, {"href": "http://localhost/volume/targets/6d0ab8f1-bc52-494b-b28f-19e13a8860e6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "6205a286-37c4-4b45-b679-a22b555c9329", "created_at": "2025-11-11T18:58:08.346990+00:00", "updated_at": null, "boot_index": 1, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6205a286-37c4-4b45-b679-a22b555c9329", "rel": "self"}, {"href": "http://localhost/volume/targets/6205a286-37c4-4b45-b679-a22b555c9329", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "d837a9d4-be61-41ca-a859-bcff58a24c1f", "created_at": "2025-11-11T18:58:08.347730+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/d837a9d4-be61-41ca-a859-bcff58a24c1f", "rel": "self"}, {"href": "http://localhost/volume/targets/d837a9d4-be61-41ca-a859-bcff58a24c1f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&detail=True&limit=3&marker=d837a9d4-be61-41ca-a859-bcff58a24c1f"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid [0.048569s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e104555-cda4-4e07-8303-dc5e9ecd4652 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:08.369079+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy [0.020240s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_link_hidden_for_older_versions [0.057844s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f8ccc83-e22f-458a-8d58-7345dad3829a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:08.422338+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid_invalid_type [0.067498s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': 123, 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9ccbba35-adbd-48d6-8cb5-999187c1dfb5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail [0.078715s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8d751bd6-a88a-459a-b5f9-566a9d0b4284 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:08.448633+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_old_api_version [0.032160s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_against_single [0.073180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ba935991-5c58-49a5-99e5-5cb174dc46e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource [0.091070s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0132ea5e-a179-408d-b60a-5b1825b370bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "e60813c6-a738-422e-be95-3986ac186e3f", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/e60813c6-a738-422e-be95-3986ac186e3f", "rel": "self"}, {"href": "http://localhost/ports/e60813c6-a738-422e-be95-3986ac186e3f", "rel": "bookmark"}]}, {"uuid": "29c6d54b-3d6d-4c29-940e-9994e97dad8a", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/29c6d54b-3d6d-4c29-940e-9994e97dad8a", "rel": "self"}, {"href": "http://localhost/ports/29c6d54b-3d6d-4c29-940e-9994e97dad8a", "rel": "bookmark"}]}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports?limit=1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b9fa929f-a947-4582-a79c-04bce936defd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": [{"uuid": "e60813c6-a738-422e-be95-3986ac186e3f", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/e60813c6-a738-422e-be95-3986ac186e3f", "rel": "self"}, {"href": "http://localhost/ports/e60813c6-a738-422e-be95-3986ac186e3f", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=1&marker=e60813c6-a738-422e-be95-3986ac186e3f"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_invalid_ident [0.043079s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/123 123/ports WITH {} GOT Response: 400 Bad Request Content-Type: application/json {"error_message": "{\"code\": 400, \"title\": \"Bad Request\", \"description\": \"Expected UUID or name for node: 123 123\"}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root [0.146668s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0c51b10c-947c-45b6-8511-0bdfc3d56e88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:08.589432+00:00", "updated_at": null, "connector_id": "test-connector-id-123", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_and_fields [0.069175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?detail=True&fields=boot_index,extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1a47a790-daf9-448d-abc6-529ed0e1b586 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root_non_existent [0.037149s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-65249e2c-805e-46ea-88f1-07d7637cddfa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_link [0.050428s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9b2eb9b9-4ed8-4933-8a42-5f3a85e3e3f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:08.633877+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_mandatory_field [0.038133s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/value', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-25e828d4-ccd2-4d32-b872-6c4f21eaa6f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /value. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_by_node_name_ok [0.092518s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?detail=True&node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-56a0106f-20e7-4173-87f5-32e3a0ee916a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:08.667666+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_node_not_found [0.066038s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a5970fe6-ea9b-4516-987e-e3d5fde20698 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup None could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden [0.331602s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_multi [0.062792s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2dbe0e1d-8adb-4567-b978-7039a7d3c34a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:08.712335+00:00", "updated_at": "2025-11-11T18:58:08.715321+00:00", "connector_id": "iqn.2012-06.com.example:initiator", "extra": {"foo2": "bar2", "foo3": "bar3"}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b0c53c5-fdd9-4345-86f8-368416e78b91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:08.712335+00:00", "updated_at": "2025-11-11T18:58:08.715321+00:00", "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_false [0.071101s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f242ab91-3c3d-466e-9483-be2800b146f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden_no_project [0.038318s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_node_id [0.036686s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3e6ceb69-ea8f-4e92-931c-4371579376eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_noid [0.070420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin [0.036999s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin_owner_proj_mismatch [0.021054s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_invalid_api_version [0.066797s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?detail=True WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_non_existent_property_fail [0.063980s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-063c5450-ffd1-4416-9a33-7b3fec62d0dc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_with_owner [0.021368s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy [0.020310s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_via_portgroups_subres_not_allowed [0.079477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3827e9d3-b969-45b9-a43b-41d3862259b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy_forbidden [0.021200s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_sepecified_by_path [0.058347s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/detail WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f136445f-05f1-4678-9676-dbc07cc3ac83 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for target_uuid: detail\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy [0.019973s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_uuid [0.082004s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e51ac90a-14a7-40a7-9a40-859b6ce169e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden [0.019780s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden_no_project [0.018788s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_empty [0.051461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4c23e83a-09e7-41c9-814e-d847a4ea1bd5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": []} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key [0.082098s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2ebe1491-6deb-4488-aabd-076719d26c9d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "21adf0e9-d98e-402e-ac91-f3badc4325ec", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/21adf0e9-d98e-402e-ac91-f3badc4325ec", "rel": "self"}, {"href": "http://localhost/nodes/21adf0e9-d98e-402e-ac91-f3badc4325ec", "rel": "bookmark"}]}, {"uuid": "2799f631-6db2-423d-9419-91f8253e3270", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/2799f631-6db2-423d-9419-91f8253e3270", "rel": "self"}, {"href": "http://localhost/nodes/2799f631-6db2-423d-9419-91f8253e3270", "rel": "bookmark"}]}, {"uuid": "f7dee0ee-e7b3-4a3b-a71d-2da6cf7dd0ce", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f7dee0ee-e7b3-4a3b-a71d-2da6cf7dd0ce", "rel": "self"}, {"href": "http://localhost/nodes/f7dee0ee-e7b3-4a3b-a71d-2da6cf7dd0ce", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_non_admin [0.021058s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_fields [0.019044s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_connector_id_already_exist [0.086931s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-f2a9f5c9-0096-4ded-b838-e161c63e6c93 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume connector with type None and connector ID test-connector-id-123 already exists.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_links [0.018958s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_args [0.031256s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_allowed [0.089055s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sort_key=resource_class WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b54bfd5b-582a-49f2-87cd-5dcd0d2c340c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"nodes": [{"uuid": "577f39cb-bd38-4f37-8107-b2519f5df7b6", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/577f39cb-bd38-4f37-8107-b2519f5df7b6", "rel": "self"}, {"href": "http://localhost/nodes/577f39cb-bd38-4f37-8107-b2519f5df7b6", "rel": "bookmark"}]}, {"uuid": "39363222-31a2-456b-bb38-b66af31e0d2f", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/39363222-31a2-456b-bb38-b66af31e0d2f", "rel": "self"}, {"href": "http://localhost/nodes/39363222-31a2-456b-bb38-b66af31e0d2f", "rel": "bookmark"}]}, {"uuid": "99e1ebd4-ac0d-41c1-8d36-8cbfa82a7fcb", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/99e1ebd4-ac0d-41c1-8d36-8cbfa82a7fcb", "rel": "self"}, {"href": "http://localhost/nodes/99e1ebd4-ac0d-41c1-8d36-8cbfa82a7fcb", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_invalid_power_state [0.049265s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/connector_id', 'value': 'test-connector-id-123', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b874a369-6251-4b62-863b-7d214edbea7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"volume connector update\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"power on\\\".\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_base_attributes [0.020340s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_all_by_node_name_ok [0.118197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-47482824-bb65-4302-b867-6a2a02cf271a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "01e29f77-ae92-4f2d-a446-c7e61cf2eda0", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/01e29f77-ae92-4f2d-a446-c7e61cf2eda0", "rel": "self"}, {"href": "http://localhost/volume/targets/01e29f77-ae92-4f2d-a446-c7e61cf2eda0", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "59e8beba-b6b9-41b6-aa7f-620043e4e9bb", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/59e8beba-b6b9-41b6-aa7f-620043e4e9bb", "rel": "self"}, {"href": "http://localhost/volume/targets/59e8beba-b6b9-41b6-aa7f-620043e4e9bb", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "eadb7d57-80f2-45a8-adfa-33643acab1dd", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/eadb7d57-80f2-45a8-adfa-33643acab1dd", "rel": "self"}, {"href": "http://localhost/volume/targets/eadb7d57-80f2-45a8-adfa-33643acab1dd", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links [0.042636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b75be362-16f9-4eb7-b7cc-9b15627fac9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "ce86723c-cd49-44bf-8e2a-850e661c25d3", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/ce86723c-cd49-44bf-8e2a-850e661c25d3", "rel": "self"}, {"href": "http://localhost/volume/connectors/ce86723c-cd49-44bf-8e2a-850e661c25d3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "d3983ed1-5895-4cd1-b2d1-a1fd5f45c14c", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/d3983ed1-5895-4cd1-b2d1-a1fd5f45c14c", "rel": "self"}, {"href": "http://localhost/volume/connectors/d3983ed1-5895-4cd1-b2d1-a1fd5f45c14c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "55d92dec-0f04-45ec-b3f3-be0162f0b7b3", "connector_id": "test-connector_id-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/55d92dec-0f04-45ec-b3f3-be0162f0b7b3", "rel": "self"}, {"href": "http://localhost/volume/connectors/55d92dec-0f04-45ec-b3f3-be0162f0b7b3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=uuid,node_uuid,type,connector_id&limit=3&marker=55d92dec-0f04-45ec-b3f3-be0162f0b7b3"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_invalid [0.099782s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-66783a0c-44f4-4ac8-aa8b-3b02734eb02c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/nodes?sort_key=properties WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9f929295-1dcf-4261-b4bd-ae5ce85b8946 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value properties is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/nodes?sort_key=driver_info WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ef1490ce-dc31-4ece-bf8a-e92fa4fd31f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value driver_info is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/nodes?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cd352e23-e6de-4dcd-82c2-08fc60c53b12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/nodes?sort_key=instance_info WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4446bfff-e451-430c-9962-0e7219636bc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value instance_info is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/nodes?sort_key=driver_internal_info WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cd9ceb6a-957a-44aa-ba0d-497105dc583c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value driver_internal_info is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/nodes?sort_key=clean_step WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-61b505c5-3e1a-43a8-86ae-bda59cb4a206 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value clean_step is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/nodes?sort_key=traits WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8b358986-e6be-447a-9723-ca41a508f865 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value traits is an invalid field for sorting\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_custom_fields [0.045331s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-77815b5b-bcfb-4810-b9d3-cb2e85044e18 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "b6f85b57-7ca0-4c85-87cf-a82693359879", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/b6f85b57-7ca0-4c85-87cf-a82693359879", "rel": "self"}, {"href": "http://localhost/volume/connectors/b6f85b57-7ca0-4c85-87cf-a82693359879", "rel": "bookmark"}]}, {"uuid": "e7b94846-b6fe-4992-8c10-1ca75c49a028", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/e7b94846-b6fe-4992-8c10-1ca75c49a028", "rel": "self"}, {"href": "http://localhost/volume/connectors/e7b94846-b6fe-4992-8c10-1ca75c49a028", "rel": "bookmark"}]}, {"uuid": "ae11d66c-8029-4a47-969a-2a5290bbb62b", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/ae11d66c-8029-4a47-969a-2a5290bbb62b", "rel": "self"}, {"href": "http://localhost/volume/connectors/ae11d66c-8029-4a47-969a-2a5290bbb62b", "rel": "bookmark"}]}], "next": "http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=ae11d66c-8029-4a47-969a-2a5290bbb62b"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_custom_fields [0.083436s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-da845d85-7da8-410f-a4a9-3e4cd433f81d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "5450b6f8-cfe0-48e9-88fa-c3e4b1009ea2", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/5450b6f8-cfe0-48e9-88fa-c3e4b1009ea2", "rel": "self"}, {"href": "http://localhost/volume/targets/5450b6f8-cfe0-48e9-88fa-c3e4b1009ea2", "rel": "bookmark"}]}, {"uuid": "bf380f96-7b07-49a8-b25c-ad042774c334", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/bf380f96-7b07-49a8-b25c-ad042774c334", "rel": "self"}, {"href": "http://localhost/volume/targets/bf380f96-7b07-49a8-b25c-ad042774c334", "rel": "bookmark"}]}, {"uuid": "0fc3f70c-6aad-4f9b-b468-d8a0553359fd", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/0fc3f70c-6aad-4f9b-b468-d8a0553359fd", "rel": "self"}, {"href": "http://localhost/volume/targets/0fc3f70c-6aad-4f9b-b468-d8a0553359fd", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_default_limit [0.043160s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d23ff374-bc4b-4a48-9bf8-02479550bd0d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "b70a6241-4f54-4d10-9d3c-bb463f9d85c5", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/b70a6241-4f54-4d10-9d3c-bb463f9d85c5", "rel": "self"}, {"href": "http://localhost/volume/connectors/b70a6241-4f54-4d10-9d3c-bb463f9d85c5", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "0f9733f3-f4fc-4868-b7ff-913fc3e6890a", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/0f9733f3-f4fc-4868-b7ff-913fc3e6890a", "rel": "self"}, {"href": "http://localhost/volume/connectors/0f9733f3-f4fc-4868-b7ff-913fc3e6890a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "e87f21a3-bf4a-425c-a5ba-a3f7afc9b5f8", "connector_id": "test-connector_id-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/e87f21a3-bf4a-425c-a5ba-a3f7afc9b5f8", "rel": "self"}, {"href": "http://localhost/volume/connectors/e87f21a3-bf4a-425c-a5ba-a3f7afc9b5f8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=uuid,node_uuid,type,connector_id&limit=3&marker=e87f21a3-bf4a-425c-a5ba-a3f7afc9b5f8"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_not_allowed [0.050861s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sort_key=resource_class WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-97e7bc76-1bd5-40c6-a4c1-b36312eb9937 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_collection_pagination_no_uuid [0.047040s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?fields=boot_index&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-753fa552-291e-488f-a3a5-efc586187162 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"boot_index": 0, "links": [{"href": "http://localhost/v1/volume/targets/19719d96-6fb4-4aea-b97a-3033346b902a", "rel": "self"}, {"href": "http://localhost/volume/targets/19719d96-6fb4-4aea-b97a-3033346b902a", "rel": "bookmark"}]}, {"boot_index": 1, "links": [{"href": "http://localhost/v1/volume/targets/75fd2626-e53d-4f6c-959c-bbbc9f9c7034", "rel": "self"}, {"href": "http://localhost/volume/targets/75fd2626-e53d-4f6c-959c-bbbc9f9c7034", "rel": "bookmark"}]}], "next": "http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=boot_index&limit=2&marker=75fd2626-e53d-4f6c-959c-bbbc9f9c7034"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_custom_fields_invalid_fields [0.037197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b545cb94-d57e-49f4-8fa1-68f6903e531d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_detail [0.088616s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?detail=True&limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-45e4c257-bb2f-49f2-a0f6-fa0eb8bc6172 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "0df24913-8f4f-467d-8865-1573a81072a8", "created_at": "2025-11-11T18:58:09.262175+00:00", "updated_at": null, "connector_id": "test-connector_id-0", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/0df24913-8f4f-467d-8865-1573a81072a8", "rel": "self"}, {"href": "http://localhost/volume/connectors/0df24913-8f4f-467d-8865-1573a81072a8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "213f4c71-e9eb-4a2a-a354-d16affe680d8", "created_at": "2025-11-11T18:58:09.262921+00:00", "updated_at": null, "connector_id": "test-connector_id-1", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/213f4c71-e9eb-4a2a-a354-d16affe680d8", "rel": "self"}, {"href": "http://localhost/volume/connectors/213f4c71-e9eb-4a2a-a354-d16affe680d8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "9c99c115-4fd8-422c-a58e-dbf9a00921cd", "created_at": "2025-11-11T18:58:09.263642+00:00", "updated_at": null, "connector_id": "test-connector_id-2", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/9c99c115-4fd8-422c-a58e-dbf9a00921cd", "rel": "self"}, {"href": "http://localhost/volume/connectors/9c99c115-4fd8-422c-a58e-dbf9a00921cd", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&detail=True&limit=3&marker=9c99c115-4fd8-422c-a58e-dbf9a00921cd"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one [0.039181s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c882d471-bf87-4791-986e-717d7ae4b87d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:09.296106+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail [0.035881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cbf76149-3fed-4bd1-b2b6-0585c74c0afa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:09.331642+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_insensitive [0.115219s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5984821e-d691-4fd1-8ff5-80a9fc36db1f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "42cc7de2-0e45-4a41-8851-d71c16aede17", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/42cc7de2-0e45-4a41-8851-d71c16aede17", "rel": "self"}, {"href": "http://localhost/nodes/42cc7de2-0e45-4a41-8851-d71c16aede17", "rel": "bookmark"}]}, {"uuid": "d03409e7-9a1f-43a8-acd2-f2c8bcd3c363", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/d03409e7-9a1f-43a8-acd2-f2c8bcd3c363", "rel": "self"}, {"href": "http://localhost/nodes/d03409e7-9a1f-43a8-acd2-f2c8bcd3c363", "rel": "bookmark"}]}, {"uuid": "1f9bbc92-4495-4dd7-bbb3-2f981cfbe901", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1f9bbc92-4495-4dd7-bbb3-2f981cfbe901", "rel": "self"}, {"href": "http://localhost/nodes/1f9bbc92-4495-4dd7-bbb3-2f981cfbe901", "rel": "bookmark"}]}]} GET /v1/nodes?associated=FALSE WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e64f0caf-1291-40ab-b5d0-a9e0a7abced3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "42cc7de2-0e45-4a41-8851-d71c16aede17", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/42cc7de2-0e45-4a41-8851-d71c16aede17", "rel": "self"}, {"href": "http://localhost/nodes/42cc7de2-0e45-4a41-8851-d71c16aede17", "rel": "bookmark"}]}, {"uuid": "d03409e7-9a1f-43a8-acd2-f2c8bcd3c363", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/d03409e7-9a1f-43a8-acd2-f2c8bcd3c363", "rel": "self"}, {"href": "http://localhost/nodes/d03409e7-9a1f-43a8-acd2-f2c8bcd3c363", "rel": "bookmark"}]}, {"uuid": "1f9bbc92-4495-4dd7-bbb3-2f981cfbe901", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1f9bbc92-4495-4dd7-bbb3-2f981cfbe901", "rel": "self"}, {"href": "http://localhost/nodes/1f9bbc92-4495-4dd7-bbb3-2f981cfbe901", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_custom_fields [0.039744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=boot_index,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6d2da777-a80a-4e73-bb73-42a6502360cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"boot_index": 0, "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_against_single [0.034666s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d7364055-b8be-42aa-926e-c54049f4552e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_with_limit [0.057983s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=False&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2eea3b57-b87f-439b-b5e1-b6cf490d7aa4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"nodes": [{"uuid": "e84a0284-85d9-453f-9b4d-760396506d95", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/e84a0284-85d9-453f-9b4d-760396506d95", "rel": "self"}, {"href": "http://localhost/nodes/e84a0284-85d9-453f-9b4d-760396506d95", "rel": "bookmark"}]}, {"uuid": "65419935-0acc-4b32-9dc5-759f05276523", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/65419935-0acc-4b32-9dc5-759f05276523", "rel": "self"}, {"href": "http://localhost/nodes/65419935-0acc-4b32-9dc5-759f05276523", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=instance_uuid,maintenance,power_state,provision_state,uuid,name&limit=2&marker=65419935-0acc-4b32-9dc5-759f05276523"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_invalid_api_version [0.048235s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_and_fields [0.032262s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?detail=True&fields=connector_id,extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-220b71d1-4c30-445c-b0ae-3ac27aedd9ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unexpected arguments: detail\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_name [0.033570s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/validate?node=spam WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cf4b948e-8fab-480b-93fc-3ef3ef70e046 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_by_node_name_ok [0.036471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?detail=True&node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ae5c89b5-2deb-431e-97ee-99d0a961872b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:09.437541+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_name_unsupported [0.031987s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/validate?node=spam WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-7a82ecd2-ef18-4486-a9ae-c05063eaf9f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_multi [0.403808s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'value': 'bar1x', 'op': 'replace'}, {'path': '/extra/foo2', 'value': 'bar2x', 'op': 'replace'}, {'path': '/extra/foo3', 'value': 'bar3x', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3a7e3f78-6f53-4440-a1bd-4c26f265b5b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:09.413686+00:00", "updated_at": "2025-11-11T18:58:09.420592+00:00", "connector_id": "iqn.2012-06.com.example:initiator", "extra": {"foo1": "bar1x", "foo2": "bar2x", "foo3": "bar3x"}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_false [0.036809s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab9cb135-c5e1-425c-a469-dd38debdd913 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_uuid [0.033649s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/validate?node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e0d6985c-eb91-4764-96a5-68abc9581d36 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_invalid_api_version [0.030753s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?detail=True WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_uuid_using_deprecated_interface [0.042203s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/validate?node_uuid=1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-44c4ea8a-8394-4bca-b518-b49505a1a9e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_id [0.087352s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'value': '1', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e7c223db-5c25-4b87-9ca6-fde045b70949 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: connector_id, extra, node_uuid, type\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_sepecified_by_path [0.045581s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/detail WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dd6958ad-b310-460d-93c5-978aead0e627 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for connector_uuid: detail\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_invalid_uuid_or_name [0.028998s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1234~1234~1234 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e2a9941b-ee38-4231-8c3a-b4f99a569261 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a logical name or UUID but received 1234~1234~1234.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource [0.056297s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8eda39b0-83e0-4255-bb75-661668b95d49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "d2094ab6-3adb-4355-b78a-0a1f9569a271", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/d2094ab6-3adb-4355-b78a-0a1f9569a271", "rel": "self"}, {"href": "http://localhost/volume/connectors/d2094ab6-3adb-4355-b78a-0a1f9569a271", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "0f926a98-bae1-43b0-bb35-a6cfe16fb751", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/0f926a98-bae1-43b0-bb35-a6cfe16fb751", "rel": "self"}, {"href": "http://localhost/volume/connectors/0f926a98-bae1-43b0-bb35-a6cfe16fb751", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors?limit=1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-13a02571-cfab-47b8-a33f-9b9941189964 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "d2094ab6-3adb-4355-b78a-0a1f9569a271", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/d2094ab6-3adb-4355-b78a-0a1f9569a271", "rel": "self"}, {"href": "http://localhost/volume/connectors/d2094ab6-3adb-4355-b78a-0a1f9569a271", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=uuid,node_uuid,type,connector_id&limit=1&marker=d2094ab6-3adb-4355-b78a-0a1f9569a271"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_empty [0.063111s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6f79bf77-87d9-4152-82b9-c6b32d2ddf2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": []} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid [0.110937s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-278ecbd8-53fb-4012-a20b-4a19f81aa5c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:09.622756+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_all_by_node_name_ok [0.048741s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a8c784ff-0818-4fe4-b8f0-22e6108bb353 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "e3104e5e-f294-4729-b655-778d5abc11d2", "connector_id": "test-value-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/e3104e5e-f294-4729-b655-778d5abc11d2", "rel": "self"}, {"href": "http://localhost/volume/connectors/e3104e5e-f294-4729-b655-778d5abc11d2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "bdb5ad08-3cfa-404a-907a-5e6345b8c38d", "connector_id": "test-value-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/bdb5ad08-3cfa-404a-907a-5e6345b8c38d", "rel": "self"}, {"href": "http://localhost/volume/connectors/bdb5ad08-3cfa-404a-907a-5e6345b8c38d", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "7dd9f819-8fcb-4da3-a0b6-9bf72edeb938", "connector_id": "test-value-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/7dd9f819-8fcb-4da3-a0b6-9bf72edeb938", "rel": "self"}, {"href": "http://localhost/volume/connectors/7dd9f819-8fcb-4da3-a0b6-9bf72edeb938", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_custom_fields [0.040052s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5246aa4f-4fec-47f4-867e-3a2ccd7eff20 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "0025ecd0-3c16-4c04-aab0-d0a5d41a24ed", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/0025ecd0-3c16-4c04-aab0-d0a5d41a24ed", "rel": "self"}, {"href": "http://localhost/volume/connectors/0025ecd0-3c16-4c04-aab0-d0a5d41a24ed", "rel": "bookmark"}]}, {"uuid": "1f24417e-d05d-4753-95b4-dafb0833edde", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/1f24417e-d05d-4753-95b4-dafb0833edde", "rel": "self"}, {"href": "http://localhost/volume/connectors/1f24417e-d05d-4753-95b4-dafb0833edde", "rel": "bookmark"}]}, {"uuid": "18ba0238-153a-4a3a-9dca-6e6fc2d59ecf", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/18ba0238-153a-4a3a-9dca-6e6fc2d59ecf", "rel": "self"}, {"href": "http://localhost/volume/connectors/18ba0238-153a-4a3a-9dca-6e6fc2d59ecf", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid_invalid_type [0.078126s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': 123, 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d4ee9a3a-ea7c-4b1b-876b-141f01b0367b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_pagination_no_uuid [0.038997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?fields=connector_id&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c25876f8-8f97-4571-bf81-baf47f9b5767 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"connector_id": "test-connector_id-0", "links": [{"href": "http://localhost/v1/volume/connectors/ddcfd25c-47cb-4a37-b556-8d5df6a8bde5", "rel": "self"}, {"href": "http://localhost/volume/connectors/ddcfd25c-47cb-4a37-b556-8d5df6a8bde5", "rel": "bookmark"}]}, {"connector_id": "test-connector_id-1", "links": [{"href": "http://localhost/v1/volume/connectors/80664a4c-8a58-43ad-ba18-50c94ede8923", "rel": "self"}, {"href": "http://localhost/volume/connectors/80664a4c-8a58-43ad-ba18-50c94ede8923", "rel": "bookmark"}]}], "next": "http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=connector_id&limit=2&marker=80664a4c-8a58-43ad-ba18-50c94ede8923"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_api_version [0.031139s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,extra WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_fields [0.037009s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-fff64342-18e8-4b1e-99a7-4ebb4996cb45 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Field(s) \\\"spongebob\\\" are not valid\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_links [0.460116s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ebbc1c3b-1776-4341-9553-757e438767ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6118ccd4-8fb2-4124-aa97-9bd269395a55", "created_at": "2025-11-11T18:58:09.827020+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55", "rel": "self"}, {"href": "http://localhost/volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f035b906-71d2-435e-ad93-1fe9c1846e4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6118ccd4-8fb2-4124-aa97-9bd269395a55", "created_at": "2025-11-11T18:58:09.827020+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55", "rel": "self"}, {"href": "http://localhost/volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ee9ea0d3-6e71-41f2-b0c3-92a6e7a14a46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6118ccd4-8fb2-4124-aa97-9bd269395a55", "created_at": "2025-11-11T18:58:09.827020+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55", "rel": "self"}, {"href": "http://localhost/volume/targets/6118ccd4-8fb2-4124-aa97-9bd269395a55", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_non_existent_node_uuid [0.089215s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ef58c4d9-2d51-4bb4-acf7-968953882861 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource_node_not_found [0.230738s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ac8fe4e3-4c24-4f34-9b48-4dbff95f6856 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one [0.038718s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-18d939ba-872c-49c8-a39f-df35f4363207 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:09.876716+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_singular [0.057717s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/connector_id', 'value': 'test-connector-id-999', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a88eb5db-6f24-4606-bbd3-fa8dcf05a1b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:09.900844+00:00", "updated_at": null, "connector_id": "test-connector-id-999", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_custom_fields [0.036450s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781?fields=connector_id,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5db68f85-231b-4c73-b7bb-1cff4b9eb3d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource_noid [0.064699s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_many [0.076494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-49d02425-02b6-47fe-ac29-f55ee6fcec9e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "17a194c8-7fac-49de-b02a-91de015299d9", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/17a194c8-7fac-49de-b02a-91de015299d9", "rel": "self"}, {"href": "http://localhost/volume/targets/17a194c8-7fac-49de-b02a-91de015299d9", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "47285b71-86cd-403c-ba46-f008b5b071a6", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/47285b71-86cd-403c-ba46-f008b5b071a6", "rel": "self"}, {"href": "http://localhost/volume/targets/47285b71-86cd-403c-ba46-f008b5b071a6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "1b912d32-36d7-4702-b103-035f5d9687a6", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1b912d32-36d7-4702-b103-035f5d9687a6", "rel": "self"}, {"href": "http://localhost/volume/targets/1b912d32-36d7-4702-b103-035f5d9687a6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "af5245d6-efa6-4242-8ead-70da9861a26c", "boot_index": 3, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/af5245d6-efa6-4242-8ead-70da9861a26c", "rel": "self"}, {"href": "http://localhost/volume/targets/af5245d6-efa6-4242-8ead-70da9861a26c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "7afe6369-a2f7-4633-bdf2-c6acd6d474d9", "boot_index": 4, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/7afe6369-a2f7-4633-bdf2-c6acd6d474d9", "rel": "self"}, {"href": "http://localhost/volume/targets/7afe6369-a2f7-4633-bdf2-c6acd6d474d9", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_invalid_api_version [0.030151s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource [0.043345s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d52a321b-71c2-4ca9-8db1-061cb267ee74 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_byid [0.065240s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2054fbf4-a643-4da3-b99c-e465eeda8a91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:09.951626+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {"foo": "bar"}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource_invalid_api_version [0.032046s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ca9d4d71-d012-435e-bc53-ac7dbbd4e16f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.31 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_links [0.053074s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-377b3823-f7b1-4a41-b9f8-d66faece6ed0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8ec3bc68-437b-4d8e-be55-c8811b2548cf", "created_at": "2025-11-11T18:58:09.984051+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf", "rel": "self"}, {"href": "http://localhost/volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f85071a6-6f46-4ebc-b982-c8bccde99647 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8ec3bc68-437b-4d8e-be55-c8811b2548cf", "created_at": "2025-11-11T18:58:09.984051+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf", "rel": "self"}, {"href": "http://localhost/volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0434d69f-fd4a-4f5f-84b7-fe91d3f624f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8ec3bc68-437b-4d8e-be55-c8811b2548cf", "created_at": "2025-11-11T18:58:09.984051+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf", "rel": "self"}, {"href": "http://localhost/volume/connectors/8ec3bc68-437b-4d8e-be55-c8811b2548cf", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one [0.069015s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bac1b773-5fc0-4850-9966-9f26f173a114 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource_link [0.039548s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-143775e2-6215-4e19-b487-9ba2d2982a98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:10.038548+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_invalid_api_version [0.068075s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_many [0.074974s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-997f25d3-bb13-447f-b996-4d894f4047dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "4f17ab0f-0d00-4e5d-ae78-be50699bcb1c", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/4f17ab0f-0d00-4e5d-ae78-be50699bcb1c", "rel": "self"}, {"href": "http://localhost/volume/connectors/4f17ab0f-0d00-4e5d-ae78-be50699bcb1c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "f65443a8-e903-43da-90f1-8af7b46e9d74", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/f65443a8-e903-43da-90f1-8af7b46e9d74", "rel": "self"}, {"href": "http://localhost/volume/connectors/f65443a8-e903-43da-90f1-8af7b46e9d74", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "c8aeab4f-bafb-4025-9cfb-c021f754445f", "connector_id": "test-connector_id-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/c8aeab4f-bafb-4025-9cfb-c021f754445f", "rel": "self"}, {"href": "http://localhost/volume/connectors/c8aeab4f-bafb-4025-9cfb-c021f754445f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "61d106a5-8994-4e59-adb5-9f6800df07d8", "connector_id": "test-connector_id-3", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/61d106a5-8994-4e59-adb5-9f6800df07d8", "rel": "self"}, {"href": "http://localhost/volume/connectors/61d106a5-8994-4e59-adb5-9f6800df07d8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "7a5eb0ae-f19d-428b-8088-964540304339", "connector_id": "test-connector_id-4", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/7a5eb0ae-f19d-428b-8088-964540304339", "rel": "self"}, {"href": "http://localhost/volume/connectors/7a5eb0ae-f19d-428b-8088-964540304339", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one_invalid_api_version [0.066986s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one [0.042968s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8a4a5a6f-7338-42f1-886a-a189a4bc9eb4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource [0.079844s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-803cde69-a982-4388-8e13-3207b697bc7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "29482662-25aa-4ff5-bf68-2f0063d2ee36", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/29482662-25aa-4ff5-bf68-2f0063d2ee36", "rel": "self"}, {"href": "http://localhost/volume/targets/29482662-25aa-4ff5-bf68-2f0063d2ee36", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "bb48fd4d-bd3e-43cb-b8f3-721b0161630e", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/bb48fd4d-bd3e-43cb-b8f3-721b0161630e", "rel": "self"}, {"href": "http://localhost/volume/targets/bb48fd4d-bd3e-43cb-b8f3-721b0161630e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets?limit=1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd4fa8a9-467f-4047-b946-c84fc6c093cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "29482662-25aa-4ff5-bf68-2f0063d2ee36", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/29482662-25aa-4ff5-bf68-2f0063d2ee36", "rel": "self"}, {"href": "http://localhost/volume/targets/29482662-25aa-4ff5-bf68-2f0063d2ee36", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}], "next": "http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=uuid,node_uuid,volume_type,boot_index,volume_id&limit=1&marker=29482662-25aa-4ff5-bf68-2f0063d2ee36"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_not_found [0.079453s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/ef1ea8d8-3e58-4336-a145-8f4e06cacfe6 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9f1b48d1-ab6b-43fc-9354-06fb090067fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector ef1ea8d8-3e58-4336-a145-8f4e06cacfe6 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one_invalid_api_version [0.035601s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key [0.094875s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1e6644a1-37ac-45c0-9181-6e8c0920366a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "273164a1-462b-497b-8faa-11b09270a8ef", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/273164a1-462b-497b-8faa-11b09270a8ef", "rel": "self"}, {"href": "http://localhost/volume/targets/273164a1-462b-497b-8faa-11b09270a8ef", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "5d524090-bb93-43c0-9582-4d964e8afca2", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/5d524090-bb93-43c0-9582-4d964e8afca2", "rel": "self"}, {"href": "http://localhost/volume/targets/5d524090-bb93-43c0-9582-4d964e8afca2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "9e02601b-7082-4c30-835b-5ff5d9091923", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9e02601b-7082-4c30-835b-5ff5d9091923", "rel": "self"}, {"href": "http://localhost/volume/targets/9e02601b-7082-4c30-835b-5ff5d9091923", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_node_not_found [0.062962s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/eeeeeeee-cccc-aaaa-bbbb-cccccccccccc/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-10ec433c-1345-4fd2-8587-f9573d707018 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node eeeeeeee-cccc-aaaa-bbbb-cccccccccccc could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key [0.046257s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-065287f5-f5e1-45d8-ab63-6a51f3f2fa44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "049af420-9ce0-46e3-a8c2-a3f8eb1dbd39", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/049af420-9ce0-46e3-a8c2-a3f8eb1dbd39", "rel": "self"}, {"href": "http://localhost/volume/connectors/049af420-9ce0-46e3-a8c2-a3f8eb1dbd39", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "4f9b9b7c-a0c5-4259-b258-51f8d5f6b919", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/4f9b9b7c-a0c5-4259-b258-51f8d5f6b919", "rel": "self"}, {"href": "http://localhost/volume/connectors/4f9b9b7c-a0c5-4259-b258-51f8d5f6b919", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "f283c558-72a7-42af-b746-db1e43b5bca6", "connector_id": "test-connector_id-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/f283c558-72a7-42af-b746-db1e43b5bca6", "rel": "self"}, {"href": "http://localhost/volume/connectors/f283c558-72a7-42af-b746-db1e43b5bca6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key_invalid [0.035471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bf9af45a-513c-46a1-ace5-a2b461c9fed3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/volume/connectors?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8f802294-3d78-4d06-8f2e-ebb5eab5d98e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key_invalid [0.062958s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-68a8fea0-ebe4-4c9e-ad9f-d8635687df39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value \\\"foo\\\" is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/volume/targets?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cc5bf07f-101a-4b1b-a423-9251f6d5b634 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value extra is an invalid field for sorting\", \"debuginfo\": null}"} GET /v1/volume/targets?sort_key=properties WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-214435a5-5dae-4874-b661-64957feb40c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The sort_key value properties is an invalid field for sorting\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_multi [0.114025s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}, {'path': '/extra/foo3', 'value': 'bar3', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-435df0f4-cb16-4f3e-a68a-95d4ade5f083 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.205611+00:00", "updated_at": null, "boot_index": 0, "extra": {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_noid [0.055833s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_id [0.049343s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'value': '1', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3d5cc6bc-f1c8-4090-a3cb-31c8e0e3c622 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: boot_index, extra, node_uuid, properties, volume_id, volume_type\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_001_values ... SKIPPED: These are fake reference values for YAML templating {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target [0.075389s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-44b159f8-b2b1-42c5-a8c6-e039905d95a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4d3cf573-e946-4c92-a74e-0875063c2480 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_filtering_by_multi_shard_as_list [0.087461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?shard=foo&shard=bar WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-43504f8d-5604-4b81-a018-1be654a81802 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "c4b229f4-f356-4f04-89c9-fad23448071d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/c4b229f4-f356-4f04-89c9-fad23448071d", "rel": "self"}, {"href": "http://localhost/nodes/c4b229f4-f356-4f04-89c9-fad23448071d", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid [0.048636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b04269e-6e1a-44c7-9e3a-a9d94ee15105 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.345437+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_doesnt_contain_id [0.071348s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {'foo': 123}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-9bb75560-0206-41f3-9984-c206bc24f4ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.387657+00:00", "updated_at": null, "boot_index": 0, "extra": {"foo": 123}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b8ea46d9-ab22-4c86-88da-0ed0c912898e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.387657+00:00", "updated_at": null, "boot_index": 0, "extra": {"foo": 123}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid_invalid_type [0.044090s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': 123, 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8cc732db-4b4d-4c22-a9de-5660f6728873 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_002_nodes_post_admin [0.096960s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-670a8c23-1163-4077-8af4-b74e64a99b00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_filtering_by_multi_shard_detail [0.078107s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?shard=foo,bar WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-56aa41e1-26a3-4539-9875-7ff7346c8f06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "edad56fc-4197-4547-a4ac-42f34036f4ef", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/edad56fc-4197-4547-a4ac-42f34036f4ef", "rel": "self"}, {"href": "http://localhost/nodes/edad56fc-4197-4547-a4ac-42f34036f4ef", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root [0.054802s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/boot_index', 'value': 100, 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-06088634-9e63-4c28-8deb-2b88c12a9385 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.445860+00:00", "updated_at": null, "boot_index": 100, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_error [0.072450s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-18d3206b-7472-4bf6-bfe5-01bf8ebed548 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_003_nodes_post_member [0.087520s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-85f7a9be-1aaa-4fe4-90f8-9e04488e858b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_filtering_by_shard [0.074904s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?shard=foo WITH {'fields': 'shard'} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dea5e01f-94a0-45c3-9456-b17886f9adb3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"nodes": [{"shard": "foo", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root_non_existent [0.051022s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3ac27029-dcfd-4a83-b575-1dcec446620b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: boot_index, extra, node_uuid, properties, volume_id, volume_type\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_mandatory_field [0.045286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/boot_index', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-32245437-b1a8-4011-909d-7676acf63a2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'boot_index' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_filtering_by_shard_detail_fails_wrong_version [0.055484s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?shard=foo WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-f2ac95af-927f-4dab-9d2c-227d165a6488 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.82\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_generate_uuid [0.101405s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/c00b5105-219e-465e-afa0-5766c9b5bdab Openstack-Request-Id: req-833605a7-6b29-45a9-bc84-e252e87ac689 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c00b5105-219e-465e-afa0-5766c9b5bdab", "created_at": "2025-11-11T18:58:10.548053+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/c00b5105-219e-465e-afa0-5766c9b5bdab", "rel": "self"}, {"href": "http://localhost/volume/targets/c00b5105-219e-465e-afa0-5766c9b5bdab", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/targets/c00b5105-219e-465e-afa0-5766c9b5bdab WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be6b5422-0cee-46ee-915e-93bb12df751f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c00b5105-219e-465e-afa0-5766c9b5bdab", "created_at": "2025-11-11T18:58:10.548053+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/c00b5105-219e-465e-afa0-5766c9b5bdab", "rel": "self"}, {"href": "http://localhost/volume/targets/c00b5105-219e-465e-afa0-5766c9b5bdab", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_004_nodes_post_reader [0.089231s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-84cf7184-cc33-42aa-8032-a9611a4a0345 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_filtering_by_shard_fails_wrong_version [0.075007s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?shard=foo WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-3f920bae-be0e-43ac-b51a-7a051e279ec0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.82\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_api_version [0.062108s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_multi [0.118269s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5110f6d3-1ca6-468d-a11c-a6defb3121b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.592757+00:00", "updated_at": "2025-11-11T18:58:10.595887+00:00", "boot_index": 0, "extra": {"foo2": "bar2", "foo3": "bar3"}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-744320ba-61df-497e-b4cb-806e9506db7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.592757+00:00", "updated_at": "2025-11-11T18:58:10.595887+00:00", "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_node_uuid_format [0.048186s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': 123} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8db34009-21c4-4607-a184-ed816f154987 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 123 is not of type 'string'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_005_nodes_post_service [0.104321s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-345a8ad4-206b-4ed9-916a-30bb81f9040a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_node_uuid [0.033285s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a97a1e8a-4c76-4946-9067-7622a1d8f654 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'node_uuid' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_filtering_by_sharded [0.095790s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sharded=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-87baff70-dfdd-464f-a61c-ddf3da5ae669 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}]} GET /v1/nodes?sharded=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f3757cf9-2305-4b05-8018-a6f35d26e131 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"nodes": [{"uuid": "ad0cfc30-c773-4f56-a77e-b5b48d512ff8", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/ad0cfc30-c773-4f56-a77e-b5b48d512ff8", "rel": "self"}, {"href": "http://localhost/nodes/ad0cfc30-c773-4f56-a77e-b5b48d512ff8", "rel": "bookmark"}]}, {"uuid": "c3ad299e-1908-4804-acb9-d5064abc0f36", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/c3ad299e-1908-4804-acb9-d5064abc0f36", "rel": "self"}, {"href": "http://localhost/nodes/c3ad299e-1908-4804-acb9-d5064abc0f36", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_type [0.033241s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-775840c8-3f3f-42ef-b321-bdce77bf4692 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'volume_type' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_node_id [0.088486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-230d3fcf-b80b-4280-9336-566a50929a7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: boot_index, extra, node_uuid, properties, volume_id, volume_type\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_value [0.033656s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c5bb236a-05c3-418a-beb7-7d67174751de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for target: 'boot_index' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_filtering_by_single_shard_detail [0.081547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?shard=foo WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-952f455a-a398-421b-ae8c-1bc5cccbece4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:10.798950+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": "foo", "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_non_existent_property_fail [0.065051s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0acd6e49-71e2-4610-af8f-2a584ed4d549 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_node_uuid_not_found [0.036715s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3051b4da-b3ca-41b9-b9c6-e887b6307c38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid input for field/attribute node_uuid. Value: '1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'. \", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_006_nodes_get_node_admin [0.145267s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-81aa80e6-7bbc-4ad3-8fc8-26f528fec2b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:10.765853+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_uuid [0.040106s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-65fd6fd1-318e-43a6-af99-d18d81414e2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: boot_index, extra, node_uuid, properties, volume_id, volume_type\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_007_nodes_get_node_member [0.066927s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b93f7003-4de8-49f2-bf0c-f1033872597b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:10.883849+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_boot_index_already_exist [0.047037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/boot_index', 'value': 100, 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-2524e0b0-cf73-4b05-ab8d-2e59ca5e4254 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A volume target with boot index '100' for the same node already exists.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_get_node_shard_field [0.106847s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b96b5759-8c31-425c-9966-2871bdfda70b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:10.881187+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "shard": "foo", "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_valid_extra [0.098538s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {'str': 'foo', 'int': 123, 'float': 0.1, 'bool': True, 'list': [1, 2], 'none': None, 'dict': {'cat': 'meow'}}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-6ba76e05-daae-4b1a-811d-43e0b8b93df5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.912691+00:00", "updated_at": null, "boot_index": 0, "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-74d9ec3e-c4cd-4dd2-bd87-ebbb8f54d097 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:10.912691+00:00", "updated_at": null, "boot_index": 0, "extra": {"str": "foo", "int": 123, "float": 0.1, "bool": true, "list": [1, 2], "none": null, "dict": {"cat": "meow"}}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_invalid_power_state [0.089683s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/boot_index', 'value': 0, 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e183e4b2-0e7f-499f-83c5-40124fe85e5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"volume target update\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"power on\\\".\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_get_node_shard_field_fails_wrong_version [0.082196s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4cb0ede0-6d14-48c4-a48d-e093300506a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.80 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:11.006520+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_node_uuid_to_node_id_mapping [0.091368s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'volume_type': 'iscsi', 'properties': {'target_iqn': 'iqn.foo'}, 'boot_index': 0, 'volume_id': '12345678', 'extra': {}, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 Openstack-Request-Id: req-36a7386f-d8e4-4439-bd54-478897812b2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:11.016424+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_1_values ... SKIPPED: For value storage {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_lowers_conductor_group [0.087393s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_multi [0.115261s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'value': 'bar1x', 'op': 'replace'}, {'path': '/extra/foo2', 'value': 'bar2x', 'op': 'replace'}, {'path': '/extra/foo3', 'value': 'bar3x', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9d2e473c-80fa-4414-8b5d-51402fd8504b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:11.075910+00:00", "updated_at": "2025-11-11T18:58:11.079632+00:00", "boot_index": 0, "extra": {"foo1": "bar1x", "foo2": "bar2x", "foo3": "bar3x"}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_remove_chassis_uuid [0.087834s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_2_unauthenticated_user_cannot_get_node [0.090683s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/8d530904-e792-4dc6-a80f-efa8e33e1f51 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-63fd4cd8-adf8-41e2-8237-b2c59c489b9e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 8d530904-e792-4dc6-a80f-efa8e33e1f51 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_id [0.075781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'value': '1', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-da9ad9c1-389c-452c-b38b-5ff48652cd3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: boot_index, extra, node_uuid, properties, volume_id, volume_type\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_3_project_admin_can_get_node [0.063481s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/8bc09af3-f7ac-4c87-80c1-6009d04e1c06 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-aa4f4884-5e05-46dc-9de8-34b7a30ca9f6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 8bc09af3-f7ac-4c87-80c1-6009d04e1c06 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_008_nodes_get_node_reader [0.352331s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-74a3a45d-a392-435b-bf5e-5a8ea60a2595 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:10.962711+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_id [0.094838s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/chassis_id', 'value': '1', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-02ed7c39-af30-4af8-ba2b-b0a9fbcff6fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /chassis_id. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_4_project_member_cannot_get_node [0.043462s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/8824543c-aaf7-4910-97bb-124b3ed974ee WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ddf48a84-09cc-4282-8e9c-306cf016d7b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 8824543c-aaf7-4910-97bb-124b3ed974ee could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid [0.113468s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7961a897-138c-4746-a280-f12e573c780d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:11.271926+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_009_nodes_get_node_other_admin ... SKIPPED: Not implemented yet {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_5_public_api [0.036114s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ee23501d-9453-4c3a-ad16-a02ee782f1fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"name": "OpenStack Ironic API", "description": "Ironic is an OpenStack project which enables the provision and management of baremetal machines.", "default_version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "versions": [{"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}]} {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_6_public_api_v1 [0.033957s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1f2d87a8-f6e6-4714-9a5c-abde1bafc0dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "portgroups": [{"href": "http://localhost/v1/portgroups/", "rel": "self"}, {"href": "http://localhost/portgroups/", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "lookup": [{"href": "http://localhost/v1/lookup/", "rel": "self"}, {"href": "http://localhost/lookup/", "rel": "bookmark"}], "heartbeat": [{"href": "http://localhost/v1/heartbeat/", "rel": "self"}, {"href": "http://localhost/heartbeat/", "rel": "bookmark"}], "conductors": [{"href": "http://localhost/v1/conductors/", "rel": "self"}, {"href": "http://localhost/conductors/", "rel": "bookmark"}], "allocations": [{"href": "http://localhost/v1/allocations/", "rel": "self"}, {"href": "http://localhost/allocations/", "rel": "bookmark"}], "events": [{"href": "http://localhost/v1/events/", "rel": "self"}, {"href": "http://localhost/events/", "rel": "bookmark"}], "deploy_templates": [{"href": "http://localhost/v1/deploy_templates/", "rel": "self"}, {"href": "http://localhost/deploy_templates/", "rel": "bookmark"}], "shards": [{"href": "http://localhost/v1/shards/", "rel": "self"}, {"href": "http://localhost/shards/", "rel": "bookmark"}], "runbooks": [{"href": "http://localhost/v1/runbooks/", "rel": "self"}, {"href": "http://localhost/runbooks/", "rel": "bookmark"}], "continue_inspection": [{"href": "http://localhost/v1/continue_inspection/", "rel": "self"}, {"href": "http://localhost/continue_inspection/", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_010_nodes_get_admin [0.063779s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e4345aa6-8a7b-47bd-b07f-92c3bbaf2d2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "instance_uuid": "66ceb910-623d-4f7e-922c-783325aefeb4", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid_inalid_type [0.090417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': 123, 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-515103e6-af51-4952-8002-2906281652db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected a UUID for node_uuid, but received 123.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_7_public_api_v1_slash [0.035867s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-068adca5-7fe9-451b-9d80-c5d09fcb4a0f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "portgroups": [{"href": "http://localhost/v1/portgroups/", "rel": "self"}, {"href": "http://localhost/portgroups/", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "lookup": [{"href": "http://localhost/v1/lookup/", "rel": "self"}, {"href": "http://localhost/lookup/", "rel": "bookmark"}], "heartbeat": [{"href": "http://localhost/v1/heartbeat/", "rel": "self"}, {"href": "http://localhost/heartbeat/", "rel": "bookmark"}], "conductors": [{"href": "http://localhost/v1/conductors/", "rel": "self"}, {"href": "http://localhost/conductors/", "rel": "bookmark"}], "allocations": [{"href": "http://localhost/v1/allocations/", "rel": "self"}, {"href": "http://localhost/allocations/", "rel": "bookmark"}], "events": [{"href": "http://localhost/v1/events/", "rel": "self"}, {"href": "http://localhost/events/", "rel": "bookmark"}], "deploy_templates": [{"href": "http://localhost/v1/deploy_templates/", "rel": "self"}, {"href": "http://localhost/deploy_templates/", "rel": "bookmark"}], "shards": [{"href": "http://localhost/v1/shards/", "rel": "self"}, {"href": "http://localhost/shards/", "rel": "bookmark"}], "runbooks": [{"href": "http://localhost/v1/runbooks/", "rel": "self"}, {"href": "http://localhost/runbooks/", "rel": "bookmark"}], "continue_inspection": [{"href": "http://localhost/v1/continue_inspection/", "rel": "self"}, {"href": "http://localhost/continue_inspection/", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_8_public_api_v1_json [0.031960s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1.json WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_9_public_api_v1_xml [0.033196s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1.xml WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_uuid [0.189268s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cb1bd21f-f51f-4e4c-814f-3598a75c9db1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:11.362138+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_non_existent_node_uuid [0.092836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-12936179-210a-45ab-82f9-035fb25419d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_011_nodes_get_service [0.147915s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-214a8917-aee0-4b55-9538-7cd655fa899b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "instance_uuid": "c3d7efcb-67a0-486a-ad5d-9ecd9a1aded9", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_001_values ... SKIPPED: These are fake reference values for YAML templating {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_012_nodes_get_service_project [0.075287s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-60c05f93-666a-45da-bdb8-a9f2b97d90d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "instance_uuid": "e7abfeea-4d73-4e08-9004-e8663f038770", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_singular [0.144851s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/boot_index', 'value': 100, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4cbebab0-168c-4672-8a2f-51387a5fddc9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:11.567835+00:00", "updated_at": null, "boot_index": 100, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_ok [0.220546s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-006ca6e8-6f6d-433a-a51a-51f68308e185 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:11.532563+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_013_nodes_get_service_project_disabled [0.084418s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-16648bb2-c1e8-4b29-a757-e4f236f5dcfe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": []} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid [0.065527s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f80b1f7c-ede1-4445-9a90-9d2078ea6d3c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:11.695910+00:00", "updated_at": null, "boot_index": 0, "extra": {"foo": "bar"}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid_invalid_api_version [0.029420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_not_found [0.036501s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/6dbfce2e-955e-4c66-960b-46f3536a3ad6 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9abf8e9c-b174-40c1-8ff9-4dca019433b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 6dbfce2e-955e-4c66-960b-46f3536a3ad6 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_002_nodes_post_admin [0.202160s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b3142fb6-b0b6-4667-b927-898e4d24d47b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_014_nodes_get_service_project_admin [0.130002s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f98149fa-380b-4928-a29a-85bf6a803191 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": []} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_001_values ... SKIPPED: These are fake reference values for YAML templating {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root [0.178420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b4724698-8a10-4ccc-825a-5203064c65b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:11.760804+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_002_owner_admin_cannot_post_nodes [0.086197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ef636742-5367-4a8b-9228-7d8de14ad881 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_015_nodes_get_other_admin ... SKIPPED: Not implemented yet {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root_non_existent [0.095309s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ffa1ca61-d535-4d11-9204-5f45e51786f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_003_nodes_post_member [0.192500s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-927200fc-dc06-4ccd-9460-ea47aace1160 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_003_owner_admin_can_post_nodes [0.086878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-815fde85-a4c2-4667-abc3-25297171a17e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_cleaning [0.103213s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/362f460f-33a8-4a73-be54-9504c1c611e3 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-84f30067-2e24-49f0-85e3-8ea2b8807f7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 362f460f-33a8-4a73-be54-9504c1c611e3 can not be updated while a state transition is in progress.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_004_service_nodes_cannot_post_nodes [0.087871s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-74e544e8-4321-49cb-8356-31e40ac90a1f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_016_nodes_detail_get_admin [0.150021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e9b12680-f615-45e0-a9b4-32c5ed58b738 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.040063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "created_at": "2025-11-11T18:58:12.041200+00:00", "updated_at": "2025-11-11T18:58:12.044676+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "72aad3e2-09b0-49f1-ac3e-aef2bf673d64", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x 86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "72aad3e2-09b0-49f1-ac3e-aef2bf673d64", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "created_at": "2025-11-11T18:58:12.075057+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11 /portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_004_nodes_post_observer [0.136807s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-64ca170b-28d6-4647-96c6-3e7ebaa909ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_005_service_nodes_can_post_nodes [0.087225s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-12f59a2e-df01-4506-9538-7350e9332b70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_005_nodes_get_node_admin [0.071413s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dfcfe11a-cdf5-4baa-b178-1d1f18625f5e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.185424+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_017_nodes_detail_get_member [0.145950s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e2d5b98c-25ca-4679-a9bb-b74468c8d550 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.194478+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "created_at": "2025-11-11T18:58:12.195617+00:00", "updated_at": "2025-11-11T18:58:12.199053+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "922b4e0c-5f22-4f89-8157-708aa864901e", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x 86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "922b4e0c-5f22-4f89-8157-708aa864901e", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "created_at": "2025-11-11T18:58:12.232043+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11 /portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_deployfail [0.175342s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/debf4f6d-e97c-44c6-9fe2-bb7a9b540816 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cb29aef0-770e-4c50-9be4-ce134d3c8150 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "debf4f6d-e97c-44c6-9fe2-bb7a9b540816", "created_at": "2025-11-11T18:58:12.181550+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "deploy failed", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "active", "links": [{"href": "http://localhost/v1/nodes/debf4f6d-e97c-44c6-9fe2-bb7a9b540816", "rel": "self"}, {"href": "http://localhost/nodes/debf4f6d-e97c-44c6-9fe2-bb7a9b540816", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/debf4f6d-e97c-44c6-9fe2-bb7a9b540816/ports", "rel": "self"}, {"href": "http://localhost/nodes/debf4f6d-e97c-44c6-9fe2-bb7a9b540816/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_006_owner_manager_cannot_post_nodes [0.089045s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e552e63a-1520-445d-89e4-3ba7b23d32b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_006_nodes_get_node_member [0.080073s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f000e75b-d798-477f-94bf-0413ba6e6754 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_invalid [0.046134s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': ''}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f0ef5873-7597-4b94-9648-2bd8e65d4609 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node deadbeef-0000-1111-2222-333333333333: Cannot change name to invalid name ''\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_not_acceptable [0.043026s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': ''}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-7ddd8f16-0508-4a76-a53f-5e09f6756d98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_007_nodes_get_node_observer [0.070632s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b4010716-069b-43e8-8895-9a07754ed2dc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.337850+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_invalid [0.046652s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': 'i am invalid'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-955f8ea0-e0f8-4168-a7e8-5b0b0c772121 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node deadbeef-0000-1111-2222-333333333333: Cannot change name to invalid name 'i am invalid'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_018_nodes_detail_get_reader [0.155175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3a3b64a1-f75e-4adc-8f3b-232911a1fcba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.334461+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "created_at": "2025-11-11T18:58:12.335619+00:00", "updated_at": "2025-11-11T18:58:12.339161+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "4f02fc46-7701-4e8c-b164-5832b9d020a0", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x 86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "4f02fc46-7701-4e8c-b164-5832b9d020a0", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "created_at": "2025-11-11T18:58:12.386002+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11 /portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_007_lessee_admin_cannot_post_nodes [0.161893s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-34c9c412-12e6-4005-85c1-33b20ffb67b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_008_nodes_get_node_other_admin [0.070922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-158a586a-641d-44cb-b746-90bb23ccabe7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.407283+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_009_nodes_get_admin [0.118887s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f30c56ec-eb60-4ac4-b4cc-0cd1b398b2d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "instance_uuid": "2b439a61-58dd-484c-8386-639dfd8559e3", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_019_nodes_detail_get_service [0.144326s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4cd2ea45-f78a-480a-9f37-266a60d2c137 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.486747+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "created_at": "2025-11-11T18:58:12.487955+00:00", "updated_at": "2025-11-11T18:58:12.491393+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "6b387b93-fd65-42fe-a678-90633fdd8ef0", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x 86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "6b387b93-fd65-42fe-a678-90633fdd8ef0", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "created_at": "2025-11-11T18:58:12.519832+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11 /portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_ok [0.170798s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': 'guido-van-rossum'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-16cef670-409c-439b-8701-5eb8f349c851 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"uuid": "deadbeef-0000-1111-2222-333333333333", "created_at": "2025-11-11T18:58:12.453340+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/deadbeef-0000-1111-2222-333333333333", "rel": "self"}, {"href": "http://localhost/nodes/deadbeef-0000-1111-2222-333333333333", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/deadbeef-0000-1111-2222-333333333333/ports", "rel": "self"}, {"href": "http://localhost/nodes/deadbeef-0000-1111-2222-333333333333/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_010_nodes_get_other_admin [0.094455s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6af7eabf-8211-4749-9990-37b52ff0fdcc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "instance_uuid": "a59d5256-6f4f-44a9-ac58-560797bf0c88", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_020_nodes_node_ident_get_admin [0.146739s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c04444e8-5961-4565-99b5-4f3f58eda89d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.638587+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_reserved [0.139575s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': 'maintenance'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5ca47da0-4a4d-4410-a7f8-12a65fb589e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"maintenance\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': 'management'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b98fa523-f990-4e8d-aaf2-f6705ed84617 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"management\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': 'states'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-abb5c3c4-47a9-4252-9aa6-9f3918ed5d72 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"states\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': 'vendor_passthru'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-30b448c9-3dcf-4111-be61-8f86a5b454e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"vendor_passthru\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': 'detail'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0650fce8-714a-4bb5-98a9-789914d4fa59 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"detail\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} PATCH /v1/nodes/deadbeef-0000-1111-2222-333333333333 WITH [{'path': '/name', 'op': 'add', 'value': 'validate'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f62c17e9-3b6f-42df-a818-9e8e473dbe9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.10 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The word \\\"validate\\\" is reserved and can not be used as a node name. Reserved words are: maintenance, management, states, vendor_passthru, detail, validate.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_011_nodes_detail_get_admin [0.084827s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fcbe712f-320a-4235-9484-54fed5778bb3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.704360+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "created_at": "2025-11-11T18:58:12.705473+00:00", "updated_at": "2025-11-11T18:58:12.708825+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "2cb46ba0-a14a-4046-8e88-568031833a21", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x 86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "2cb46ba0-a14a-4046-8e88-568031833a21", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "created_at": "2025-11-11T18:58:12.723526+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11 /portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_replace_invalid [0.073203s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/name', 'op': 'replace', 'value': 'Guido Van Error'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0d87b4c2-afce-4047-b820-cc1fbfedf0d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123: Cannot change name to invalid name 'Guido Van Error'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_012_nodes_detail_get_member [0.103482s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ae60d9c7-a020-4ca6-a651-7a812e847865 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_008_lessee_admin_can_post_nodes [0.421794s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e7de881e-0da3-4d96-886a-aec596654cf8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_021_nodes_node_ident_get_member [0.150426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-909132a5-d3e8-43df-b0c8-879dcee7bcbd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.792367+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_forbidden [0.101033s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/92d02023-49a0-49e4-8409-2aa89b8fbe9f WITH [{'path': '/allocation_uuid', 'op': 'replace', 'value': '4099d01b-8d87-4b28-b98d-19b84ecdd7a1'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2cc3eda6-47a9-4828-a285-e0754e6f2d9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /allocation_uuid. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_022_nodes_node_ident_get_reader [0.065813s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c93c6528-6272-4445-ab97-8d263abc2aed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.904417+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_009_lessee_manager_cannot_post_nodes [0.090119s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1f17980a-5794-4ffa-bd98-26af63611123 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_uuid_forbidden [0.100253s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/0b079a91-4e1c-4c58-89bb-d729361c280b WITH [{'path': '/allocation_uuid', 'op': 'replace', 'value': '5a8cd06b-88d8-428e-919a-86872392c485'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ff531192-7d9e-4c7b-974a-de273ee0b248 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.52 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /allocation_uuid. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_023_nodes_node_ident_patch_admin [0.094609s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-718ac304-7156-4c01-bd65-af161e74bf75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_013_nodes_detail_get_observer [0.191358s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e6e4d49f-2c7d-4bbf-913a-fd41e6f3b0fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:12.916038+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]}, {"uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "created_at": "2025-11-11T18:58:12.917279+00:00", "updated_at": "2025-11-11T18:58:12.920678+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "81bbd16d-4373-431b-abe6-905b4db991a7", "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x 86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "81bbd16d-4373-431b-abe6-905b4db991a7", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "self"}, {"href": "http://localhost/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/volume", "rel": "bookmark"}]}, {"uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "created_at": "2025-11-11T18:58:12.969122+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11 /portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "self"}, {"href": "http://localhost/nodes/18a552fb-dcd2-43bf-9302-e4c93287be11/volume", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_conductor_forbidden [0.096638s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/57f90016-7e6f-44c8-9028-00a3969af379 WITH [{'path': '/conductor', 'op': 'replace', 'value': 'why care'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-233c86b4-23b0-453b-83db-cfa210a993dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.49 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /conductor. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_deploy_step_forbidden [0.096593s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/2235ca4f-808f-491a-9d0c-8a594849ae46 WITH [{'path': '/deploy_step', 'op': 'replace', 'value': 'deploy this'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3df40d88-adf3-4539-bbb0-c4be3ea0b972 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.44 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /deploy_step. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_010_lessee_manager_can_post_nodes [0.252782s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ded1ab4d-ba06-428b-8283-0fb7efca94f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_024_system_admin_can_patch_chassis [0.216826s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-def6f480-58d1-448b-8dd9-8e2ba67be175 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_duplicate_name [0.112600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/71ec1acc-0408-4976-8463-2c20dd05f052 WITH [{'path': '/name', 'op': 'replace', 'value': 'this-is-my-node'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-fc8dd313-c97c-4e65-a42e-4fafa108b834 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"this-is-my-node\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_025_system_member_can_patch_conductor_group [0.132496s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/conductor_group', 'value': 'DC04-ROW39'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-932fb89c-d8ec-48f2-85a7-005999653ce9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_011_third_party_admin_cannot_post_nodes [0.200671s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a4527fd7-5ff8-4826-b3f2-6c51b14d8b17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_fault_forbidden [0.167231s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/95cd2060-cbd9-42bc-84b2-1abd48099928 WITH [{'path': '/fault', 'op': 'replace', 'value': 'why care'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-daceaf80-1c17-42ae-bdbf-2d752878cbae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.42 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /fault. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_026_nodes_node_ident_patch_member [0.112927s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-348c4b3f-7c9b-409d-b4d1-d6bb898a6595 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_012_third_party_admin_can_post_nodes [0.125281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d60df6c3-4568-41d2-9e4b-d263345cf2f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_014_nodes_node_ident_get_admin [0.527267s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-44adce4b-d14b-46f8-b49a-517069bb5d91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:13.493244+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_013_owner_member_cannot_post_nodes [0.091132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2a025826-b359-4535-b20e-7e4efd117021 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_remove_ok [0.132424s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/name', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3b9972e9-aaf3-4c57-93b2-98ecd0f1354e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:13.574403+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": "node-57.1", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_015_nodes_node_ident_get_member [0.096595s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6400213a-ca7a-4971-a0e8-e4a7c38b2ce5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_replace_ok [0.090488s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/name', 'op': 'replace', 'value': 'guido-van-rossum'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-96994a87-bf34-433b-a007-25f37f6fa5ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:13.660447+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": "node-57.1", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_014_owner_reader_cannot_post_reader [0.100099s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-20fdd74c-a022-4286-a3d8-039bf6b7e4cf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_027_nodes_node_ident_patch_service [0.227186s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ad8e7342-1415-44fc-9987-99967cf2c290 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_016_nodes_node_ident_get_observer [0.075807s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3a0cb465-b16c-4ef0-9b14-282b029923b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:13.710400+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-driverz", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "z", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": ["trait1"], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_015_owner_admin_can_get_node [0.068165s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6b1e1e8b-c165-4b7b-ab42-a8f789cc73c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "bookmark"}]}, {"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "9d406407-6098-4b73-8cc0-8ca267b07453", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_016_owner_manager_can_get_node [0.063241s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-00ff25b2-1032-4b80-ae41-161f2f3fab36 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "bookmark"}]}, {"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "9e0b2eed-6a6a-4528-af4c-2549e2eebe57", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_017_nodes_node_ident_patch_admin [0.135329s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c86255ad-dd2a-4b73-9cab-ea1a4f924844 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_017_owner_member_can_get_node [0.062880s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3efc60eb-0c08-4b38-929e-535d9f347c08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "bookmark"}]}, {"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "fed9bef3-4fe4-4396-bc64-d1a0dc28c3a0", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_028_nodes_node_ident_patch_service_project [0.206434s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cdf77662-8056-4e84-b708-eaf377e81190 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_018_owner_reader_can_get_node [0.063477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c1dcd74b-7688-49d2-9cd8-2893c8e54784 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "bookmark"}]}, {"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "9c040271-cd68-4b2a-b0dc-bd7a7bcbf521", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update [0.304711s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88 WITH [{'path': '/description', 'value': 'foo', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c32d15a6-1fd3-43ed-8831-66a2a76fd1a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "4789d243-3ce9-4ecd-b8b3-ed0e91519d88", "created_at": "2025-11-11T18:58:13.941441+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": "foo", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88", "rel": "self"}, {"href": "http://localhost/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88/ports", "rel": "self"}, {"href": "http://localhost/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88/states", "rel": "self"}, {"href": "http://localhost/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88/volume", "rel": "self"}, {"href": "http://localhost/nodes/4789d243-3ce9-4ecd-b8b3-ed0e91519d88/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_018_nodes_node_ident_patch_member [0.146343s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e7572b4b-9386-42e7-a4b9-2ffad232287a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_019_lessee_admin_can_get_node [0.067686s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c9c651f4-c55b-47f9-8b63-d36a28cbc35c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "a4c7eaef-e7f3-4c2a-9db5-76a1ce310730", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_029_nodes_node_ident_patch_reader [0.138153s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-91474915-bc94-4d33-bb8e-019edb1e06e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra [0.113521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-544f1f2a-edb7-4a1d-bb41-2ce4d2e1c9cf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "fb4f271e-d5bc-4882-aae1-ee87a6323046", "created_at": "2025-11-11T18:58:14.101514+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {"foo": "bar"}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046", "rel": "self"}, {"href": "http://localhost/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046/ports", "rel": "self"}, {"href": "http://localhost/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046/states", "rel": "self"}, {"href": "http://localhost/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046/volume", "rel": "self"}, {"href": "http://localhost/nodes/fb4f271e-d5bc-4882-aae1-ee87a6323046/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_020_lessee_manager_can_get_node [0.127538s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-65911d0d-eda6-47f1-9770-e1111df2bb26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "1f258586-36a8-409d-b23d-b1a94e6ebf0f", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_019_nodes_node_ident_patch_observer [0.155976s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6f7104ec-adf7-4a96-a949-bd2bd377c034 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra_and_instance_info [0.083091s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/48981cf7-8baa-4de0-983f-15bfd338b935 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}, {'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b6c6887a-75be-4ae3-9f57-91042f80fe59 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "48981cf7-8baa-4de0-983f-15bfd338b935", "created_at": "2025-11-11T18:58:14.183095+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {"foo": "bar"}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/48981cf7-8baa-4de0-983f-15bfd338b935", "rel": "self"}, {"href": "http://localhost/nodes/48981cf7-8baa-4de0-983f-15bfd338b935", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/48981cf7-8baa-4de0-983f-15bfd338b935/ports", "rel": "self"}, {"href": "http://localhost/nodes/48981cf7-8baa-4de0-983f-15bfd338b935/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/48981cf7-8baa-4de0-983f-15bfd338b935/states", "rel": "self"}, {"href": "http://localhost/nodes/48981cf7-8baa-4de0-983f-15bfd338b935/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/48981cf7-8baa-4de0-983f-15bfd338b935/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/48981cf7-8baa-4de0-983f-15bfd338b935/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/48981cf7-8baa-4de0-983f-15bfd338b935/volume", "rel": "self"}, {"href": "http://localhost/nodes/48981cf7-8baa-4de0-983f-15bfd338b935/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_030_nodes_node_ident_delete_admin [0.137906s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-eeb34924-2de9-4350-8f2d-03123d9fb662 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_021_lessee_member_can_get_node [0.099427s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7cd94aa1-f60d-4ae1-ab9e-0e454a77ceff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "65c2996d-57b3-4f72-bb1e-501f102cb4da", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_extra [0.083973s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63 WITH [{'path': '/description', 'value': 'foo', 'op': 'replace'}, {'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-489b4428-8844-44f8-9683-2cf23b0347d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "0efc117e-274d-4dc7-afd8-2290c79baa63", "created_at": "2025-11-11T18:58:14.268217+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": "foo", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {"foo": "bar"}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63", "rel": "self"}, {"href": "http://localhost/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63/ports", "rel": "self"}, {"href": "http://localhost/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63/states", "rel": "self"}, {"href": "http://localhost/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63/volume", "rel": "self"}, {"href": "http://localhost/nodes/0efc117e-274d-4dc7-afd8-2290c79baa63/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_020_nodes_node_ident_delete_admin [0.152393s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d697335b-ea17-4286-8a62-b5fa2979d526 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_031_nodes_node_ident_delete_service [0.128585s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-773dd454-1ea6-4841-ae2d-fe50c26a5bc1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_022_lessee_reader_can_get_node [0.076736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8df68620-0909-4169-ba46-6419edad9749 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "instance_uuid": "4ea1e46c-c1ab-42a3-a3f6-fddad6cc34b3", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_instance_info [0.090421s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5255d658-f762-448e-979d-7658cd6dc788 WITH [{'path': '/description', 'value': 'foo', 'op': 'replace'}, {'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2bc8feff-213b-4fca-9981-bc7a14e79961 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "5255d658-f762-448e-979d-7658cd6dc788", "created_at": "2025-11-11T18:58:14.354457+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": "foo", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/5255d658-f762-448e-979d-7658cd6dc788", "rel": "self"}, {"href": "http://localhost/nodes/5255d658-f762-448e-979d-7658cd6dc788", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5255d658-f762-448e-979d-7658cd6dc788/ports", "rel": "self"}, {"href": "http://localhost/nodes/5255d658-f762-448e-979d-7658cd6dc788/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5255d658-f762-448e-979d-7658cd6dc788/states", "rel": "self"}, {"href": "http://localhost/nodes/5255d658-f762-448e-979d-7658cd6dc788/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5255d658-f762-448e-979d-7658cd6dc788/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5255d658-f762-448e-979d-7658cd6dc788/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5255d658-f762-448e-979d-7658cd6dc788/volume", "rel": "self"}, {"href": "http://localhost/nodes/5255d658-f762-448e-979d-7658cd6dc788/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_021_nodes_node_ident_delete_member [0.072553s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1d7a8c5f-294f-4aff-93fc-4138b2f32a46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_023_third_party_admin_cannot_get_node [0.096545s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-319c642a-0120-40e3-8822-f5d4e041fadf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": []} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_extra_instance_info [0.087540s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1 WITH [{'path': '/description', 'value': 'foo', 'op': 'replace'}, {'path': '/extra/foo', 'value': 'bar', 'op': 'add'}, {'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1229e78a-00a9-4060-900a-2e8e5dd5c950 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "2600ac63-17b0-40bf-962b-2fc29aec01b1", "created_at": "2025-11-11T18:58:14.446824+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": "foo", "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {"foo": "bar"}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1", "rel": "self"}, {"href": "http://localhost/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1/ports", "rel": "self"}, {"href": "http://localhost/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1/states", "rel": "self"}, {"href": "http://localhost/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1/volume", "rel": "self"}, {"href": "http://localhost/nodes/2600ac63-17b0-40bf-962b-2fc29aec01b1/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_032_nodes_node_ident_delete_member [0.138487s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-136ebd7a-9698-4da0-a7e9-6044362af55d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_022_nodes_node_ident_delete_observer [0.076436s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bfed3924-3ab2-46b5-8f6a-d3390ec41604 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_024_owner_reader_can_get_their_node [0.072517s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8799c38e-6839-49e0-880c-2669e7df72d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2025-11-11T18:58:14.517030+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": "lolcats", "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_033_nodes_node_ident_delete_reader [0.070512s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-62f7f4f9-1e50-4e01-becd-38c4298a753d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_023_nodes_validate_get_admin [0.075092s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c0c8c21a-bd5c-45a9-82b6-c03e34b4dbea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_025_owner_reader_cannot_get_other_node [0.065289s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/273bdee2-9d7c-4d12-a3f5-4e1301f11f56 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1113fde4-3c09-4f01-96b8-d97409721b6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 273bdee2-9d7c-4d12-a3f5-4e1301f11f56 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_034_nodes_validate_get_admin [0.059267s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-6398c1cb-f93e-421a-867a-8fbe1a005933 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_instance_info [0.144638s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/45482c48-2860-493b-85ed-bb429948f990 WITH [{'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-96374cd2-9f77-4982-8796-4bb7502cf58b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "45482c48-2860-493b-85ed-bb429948f990", "created_at": "2025-11-11T18:58:14.546866+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/45482c48-2860-493b-85ed-bb429948f990", "rel": "self"}, {"href": "http://localhost/nodes/45482c48-2860-493b-85ed-bb429948f990", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/45482c48-2860-493b-85ed-bb429948f990/ports", "rel": "self"}, {"href": "http://localhost/nodes/45482c48-2860-493b-85ed-bb429948f990/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/45482c48-2860-493b-85ed-bb429948f990/states", "rel": "self"}, {"href": "http://localhost/nodes/45482c48-2860-493b-85ed-bb429948f990/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/45482c48-2860-493b-85ed-bb429948f990/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/45482c48-2860-493b-85ed-bb429948f990/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/45482c48-2860-493b-85ed-bb429948f990/volume", "rel": "self"}, {"href": "http://localhost/nodes/45482c48-2860-493b-85ed-bb429948f990/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_024_nodes_validate_get_member [0.069167s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9ffe1075-e9ba-46b8-8666-5f8a8f2c92fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_035_nodes_validate_get_member [0.063149s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-88a7462c-910b-43ee-b300-5271052514cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_026_lessee_reader_can_get_their_node [0.077113s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-35f914b6-78bf-4c3c-9346-f9f29bc1f053 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2025-11-11T18:58:14.671549+00:00", "updated_at": "2025-11-11T18:58:14.677897+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"content": "** Redacted - requires baremetal:node:get:driver_info permission. **"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "870ffb55-41b2-4810-bf0c-11e8e8744f07", "last_error": "** Value Redacted - Requires baremetal:node:get:last_error permission. **", "lessee": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": "** Redacted - requires baremetal:node:get:reservation permission. **", "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "870ffb55-41b2-4810-bf0c-11e8e8744f07", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_025_nodes_validate_get_observer [0.065548s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b303f054-0ebb-4203-b4a1-cbd6cf5b416e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_036_nodes_validate_get_service [0.062546s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a36ee349-bf4f-4dc4-a102-446d9a500558 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_027_lessee_reader_cant_get_other_node [0.067410s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/e097f97c-30a8-46d5-9cf6-55bf9e29f144 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5fa7a25c-4c73-473d-a60a-38a1d8b4e541 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node e097f97c-30a8-46d5-9cf6-55bf9e29f144 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_none [0.159549s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351 WITH [] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8008a8bf-7799-4d64-8b9b-69817b6b8550 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6f6dcef8-6c2d-4bdc-a896-812c08573351", "created_at": "2025-11-11T18:58:14.724194+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351", "rel": "self"}, {"href": "http://localhost/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351/ports", "rel": "self"}, {"href": "http://localhost/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351/states", "rel": "self"}, {"href": "http://localhost/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351/volume", "rel": "self"}, {"href": "http://localhost/nodes/6f6dcef8-6c2d-4bdc-a896-812c08573351/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_026_nodes_maintenance_put_admin [0.091798s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-816e4c16-3c95-43da-a8a0-c8be33be21e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_028_third_party_admin_cant_get_node [0.067470s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/d40f5009-62a8-4fcc-9124-a1943221d79b WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-678c78bd-483a-418b-a30e-619093a25565 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node d40f5009-62a8-4fcc-9124-a1943221d79b could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_portgroups_subresource [0.049297s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/9bb50f13-0b8d-4ade-ad2d-d91fefdef9ff WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ce0f1600-f9b8-406f-955b-0ba46641d5ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource [0.043657s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/9bb50f13-0b8d-4ade-ad2d-d91fefdef9cc WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-135953b7-84f4-4275-a9d1-3ed4f54a84a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_029_owner_reader_can_get_restricted_fields [0.072203s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5bb48d8a-24ab-46b3-9b61-bc5abecd73bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2025-11-11T18:58:14.878783+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": "lolcats", "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_037_nodes_validate_get_service_project [0.164377s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cc2d2204-4a24-4781-b4fa-d2320054429f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource_no_port_id [0.041745s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6a0e95ed-cb4e-4674-be04-2c85f528161d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: port_ident\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_027_nodes_maintenance_put_member [0.141489s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-40e47596-2324-4d88-bfba-144d9ef1958c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_030_lessee_reader_cannot_get_restricted_fields [0.073769s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d0e0380e-4c21-4171-aae7-591730b65f6d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2025-11-11T18:58:14.965508+00:00", "updated_at": "2025-11-11T18:58:14.972183+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"content": "** Redacted - requires baremetal:node:get:driver_info permission. **"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "f7b8a35c-e601-4430-9bbb-d4f9d50440b3", "last_error": "** Value Redacted - Requires baremetal:node:get:last_error permission. **", "lessee": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": "** Redacted - requires baremetal:node:get:reservation permission. **", "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "f7b8a35c-e601-4430-9bbb-d4f9d50440b3", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_028_nodes_maintenance_put_observer [0.066860s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dcda8939-fc11-4308-a3bd-b53ba333f1f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_drive_console_enabled [0.121773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/driver', 'value': 'foo', 'op': 'add'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-96c97842-18ef-4ae2-acc2-b12433b9af05 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 can not update the driver while the console is enabled. Please stop the console first.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_038_nodes_validate_get_reader [0.152420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-10dde912-08c6-478a-a4ee-f357e8d1618e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_029_nodes_maintenance_delete_admin [0.066718s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-6473b44b-7a35-4bd3-8946-85b0f035200f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_both_invalid [0.048390s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/name', 'op': 'add', 'value': 'Windows ME'}, {'path': '/name', 'op': 'replace', 'value': 'Guido Van Error'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a2b467f2-d438-400d-b662-0fdf98466b85 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123: Cannot change name to invalid name 'Windows ME'\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_second_invalid [0.047012s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/name', 'op': 'add', 'value': 'node-0'}, {'path': '/name', 'op': 'replace', 'value': 'Guido Van Error'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6868b226-e0e6-424f-89fa-031fd33e81be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123: Cannot change name to invalid name 'Guido Van Error'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_031_owner_reader_can_get_detail [0.145120s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-54533b59-c34c-4ba0-96ff-f34b02e168d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "created_at": "2025-11-11T18:58:15.033370+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": "meow", "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": "lolcats", "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume", "rel": "self"}, {"href": "http://localhost/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume", "rel": "bookmark"}]}, {"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2025-11-11T18:58:15.062522+00:00", "updated_at": "2025-11-11T18:58:15.081761+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "e451b5ec-7b9d-4025-a4de-f0e1f15536a1", "last_error": "meow", "lessee": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d87 39cee205", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": "lolcats", "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "e451b5ec-7b9d-4025-a4de-f0e1f15536a1", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_039_nodes_maintenance_put_admin [0.080547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d4545380-3131-4ba4-b96a-36f700273626 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource [0.048697s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f0e941bc-6123-4b95-8054-51abf4809bcd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_030_nodes_maintenance_delete_member [0.134525s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b6e86d75-d4db-41a1-b417-13a8b53938f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource_no_connector_id [0.041733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-88475383-5445-4e81-ac43-9c71522aa9a1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Missing mandatory parameter: connector_uuid\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_040_nodes_maintenance_put_member [0.077971s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-afd76744-5b53-439d-a7c6-5eac01d0e4d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_targets_subresource [0.060229s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-627b170d-5889-4359-9b30-4d91a5d5d656 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_031_nodes_maintenance_delete_observer [0.082356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8eb99d5e-9a3a-45e7-8a26-9da590becb83 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_032_lessee_reader_can_get_detail [0.162673s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ce30aa00-7fe0-42ad-835d-086e0c4c2fa0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": [{"uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "created_at": "2025-11-11T18:58:15.244191+00:00", "updated_at": "2025-11-11T18:58:15.251624+00:00", "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"content": "** Redacted - requires baremetal:node:get:driver_info permission. **"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar", "traits": []}, "instance_uuid": "c398e088-bc7e-444b-af3f-65d7649538ee", "last_error": "** Value Redacted - Requires baremetal:node:get:last_error permission. **", "lessee": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": "** Redacted - requires baremetal:node:get:reservation permission. **", "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "rel": "bookmark"}], "conductor": null, "allocation_uuid": "c398e088-bc7e-444b-af3f-65d7649538ee", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume", "rel": "self"}, {"href": "http://localhost/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_041_nodes_maintenance_put_reader [0.074883s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b7fd2b87-ba0f-4df6-8611-91a01be5a950 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_id [0.045627s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/chassis_id', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-02b04fd1-1785-433e-89f3-ba6f6ac84f78 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /chassis_id. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_033_third_party_admin_cannot_get_detail [0.086171s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3ce9ec60-723a-4fa6-80fb-f02fb565d7f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": []} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid [0.082778s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/chassis_uuid', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ea3258bf-ec22-4ab8-a3f3-f73fe693814a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.25 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:15.375113+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": "node-57.1", "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_032_nodes_management_boot_device_put_admin [0.120902s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-2fff0697-0f83-430a-869e-6a825b085301 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_042_nodes_maintenance_delete_admin [0.134973s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-57110a0e-47ba-4342-b7b0-fc5c191fc7c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid_invalid_api_version [0.091020s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/chassis_uuid', 'op': 'remove'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-67a9a098-79a9-4668-a8e0-1caccbba7d71 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_034_owner_admin_can_patch_node_extra [0.130197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-48596e17-8531-46c5-b5cb-f4513ffe21b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_033_nodes_management_boot_device_put_member [0.091867s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2b785dc4-b85b-4312-96fa-66c86671b841 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_internal_field [0.043603s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/last_error', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7af101da-6c18-42b4-9870-0d81cc1e79f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /last_error. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_035_owner_manager_can_patch_node_extra [0.117836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-1733f5ac-2351-41b5-ac3f-2f61efe336f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_034_nodes_management_boot_device_put_observer [0.143017s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bb32d51a-855e-4c0c-85f7-985ae2eef3fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_mandatory_field [0.148280s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/driver', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-333e4c7d-93d3-4b03-a451-fc767c1627dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'driver' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_non_existent_property_fail [0.048746s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/extra/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5ad99802-9ca9-40f8-adf4-6de6b06b5a48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_043_nodes_maintenance_delete_member [0.298664s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8ce3dd5e-6088-4a00-a827-97692c5eab1d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_036_owner_member_can_patch_node_extra [0.158661s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b50508db-59c2-4ba6-8a4c-269d93852b10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_035_nodes_management_boot_device_get_admin [0.141353s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-67174ef5-5dc1-465f-bf18-0fc368ac43a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_ok [0.109225s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cf6dfecb-c0f1-47b8-899a-8f3c43c52ad7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:15.793086+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_037_owner_reader_cannot_patch_node_extra [0.071986s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-31a5096d-ae1f-47b3-a6e8-bb649f0537a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_044_nodes_maintenance_delete_reader [0.136776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-42aaab79-1809-43f3-b944-c211da39b22d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_uuid [0.094499s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b95e54e6-1b23-4282-b633-3798606b8282 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_036_nodes_management_boot_device_get_member [0.147219s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d1516080-d529-4d74-bac7-4e04c7bb29e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_045_nodes_management_boot_device_put_admin [0.135406s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5a1fbf09-3e84-4a8d-894e-2b23a80a063d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_037_nodes_management_boot_device_get_observer [0.076571s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-10879130-7863-4696-a1a2-23b3345a5bd0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_id [0.114609s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/chassis_id', 'value': '1', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-43c83eec-ccb1-4575-bae5-5576ea2ef634 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /chassis_id. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_038_lessee_admin_can_patch_node_extra [0.207552s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7cbb0fc7-3e0b-438c-a94b-ea5c345db039 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_046_nodes_management_boot_device_put_member [0.064822s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-48dea092-618c-41ec-b945-58d1b72f2b55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_047_nodes_management_boot_device_put_reader [0.073630s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f6d4b269-1df4-4267-81f6-df75278a6d35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin [0.110309s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3da36f91-04f7-4c8b-b0b0-2802aa3f51db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_048_nodes_management_boot_device_get_admin [0.084777s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e254372f-13ce-40f6-9e49-5bb608ef3dcc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member [0.089801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e8c6abbd-df20-4914-b481-b3b4ac840a5d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_uuid [0.180265s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/chassis_uuid', 'value': 'e74c40e0-d825-11e2-a28f-0800200c9a66', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-afd7b75c-3f9b-4cf5-a8fb-96658ceafc05 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:16.131451+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_039_lessee_manager_can_patch_node_extra [0.216524s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-da0046d0-aaa9-423f-b93e-8cab0042a07f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_049_nodes_management_boot_device_get_member [0.074705s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-acc8d745-dfbc-42ba-af10-45e88c396760 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_consoled_enabled [0.074267s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/console_enabled', 'op': 'replace', 'value': True}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0e96e636-1c4b-4235-94b1-2b009de805fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /console_enabled. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer [0.086546s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7e61c521-f5e4-4631-820a-8b5cd5cbe746 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_050_nodes_management_boot_device_get_reader [0.081059s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b51d0490-8122-4f29-8651-d3b80ba00f90 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin [0.088298s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-bdafc79d-fbd7-49d0-89ae-be3cea5f0172 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_internal_field [0.103845s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/power_state', 'op': 'replace', 'value': 'fake-state'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6803bd28-c188-48ca-8d43-877028fdcbc7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /power_state. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_051_nodes_management_boot_device_supported_get_admin [0.073323s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a50adf13-071e-4406-9758-afc91d816649 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_042_nodes_management_inject_nmi_put_member [0.086767s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-43514caa-56bc-4cbb-be2c-04c2d8bd0c37 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer [0.076644s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7b73a778-a45b-4bce-9872-9bb2ed6ed733 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_052_nodes_management_boot_device_supported_get_member [0.139002s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-368078c5-914e-4016-aa8a-655517d6fb34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance [0.187663s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/maintenance', 'op': 'replace', 'value': True}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-84250741-dc92-4cbb-aa7b-b8590d7cecfc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:16.515775+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_044_nodes_states_get_admin [0.067722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-23d02c2e-05ff-41a0-8750-7b31ca4a19f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_045_nodes_states_get_member [0.076783s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-079f25a3-d937-4ba7-ad79-6e7c1ac40576 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_053_nodes_management_boot_device_supported_get_reader [0.133419s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e125609d-c1fc-4327-87d0-b10dc5633ae2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_046_nodes_states_get_observer [0.068760s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-13deee54-fe57-4dc2-959e-7fefc7a66bef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance_by_name [0.197525s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/node-57.1 WITH [{'path': '/maintenance', 'op': 'replace', 'value': True}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a2d760e1-4d3a-417c-a47c-e22d36fb9a82 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:16.720794+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": "node-57.1", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_040_lessee_member_can_patch_node_extra [0.572236s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-2f9c1f88-5c70-4c24-9d51-83061fc5454d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_054_nodes_management_inject_nmi_put_admin [0.119901s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-142c0b2e-7721-448b-938f-edd00e78b509 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_047_nodes_states_power_put_admin [0.069400s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-71522b91-db7e-4403-bf21-a331fc835d4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_055_nodes_management_inject_nmi_put_member [0.064693s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-371bd989-1768-4ef2-813d-1a6ed38d8d43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_non_existent_chassis_uuid [0.175634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/chassis_uuid', 'value': 'eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-23077f90-ae27-4061-a470-ca9023739166 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Chassis eeeeeeee-dddd-cccc-bbbb-aaaaaaaaaaaa could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_041_lessee_reader_cannot_patch_node_extra [0.140676s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fdb7df34-4408-4fde-ab50-1e7909c55608 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_extra\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_056_nodes_management_inject_nmi_put_reader [0.066335s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a4ddf19c-9aa7-4f05-b01e-0d0af1d0d5c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_057_nodes_states_get_admin [0.061569s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e8e6266c-ddf0-48e1-a852-a2e26fab9524 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_provision_updated_at [0.086072s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/provision_updated_at', 'op': 'replace', 'value': '2000-01-01 00:00:00'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6946a404-836f-4134-808c-50c7aa743228 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /provision_updated_at. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_042_third_party_admin_cannot_patch_node_extra [0.143189s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1b5b704e-5859-4b33-b3ca-37565ad7fef0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_058_nodes_states_get_member [0.097755s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-56e6e06d-4d2f-4ff8-90df-060f3019d8c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_048_nodes_states_power_put_member [0.299861s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-307601b7-dd72-4ee1-bedb-ffa93988f8b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_059_nodes_states_get_reader [0.092712s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a984f52d-2839-4d1d-a4f5-9c7272256592 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"console_enabled": false, "last_error": null, "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_049_nodes_states_power_put_observer [0.120451s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6c6beb5b-6d00-4ab8-8a6b-6aed956a4886 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_043_owner_admin_can_change_drivers [0.208490s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/driver', 'value': 'fake-hardware'}, {'op': 'replace', 'path': '/power_interface', 'value': 'fake'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-dc369e40-17ae-4dc1-a36f-bb6bddeffaac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_060_nodes_states_power_put_admin [0.116255s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-17c3c173-55af-41e0-becb-2c0ab80d5f45 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_050_nodes_states_boot_mode_put_admin [0.095921s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d467d143-3ee6-4294-911d-1ef063cc149c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_061_nodes_states_power_put_member [0.066420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-dc391bff-5761-4241-a66c-ff134a11c031 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_051_nodes_states_boot_mode_put_member [0.070420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-85905342-654a-47fe-9965-60eec1023f47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_062_nodes_states_power_put_reader [0.064691s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6b995a5a-1ca7-4cab-88d7-5e7d672c9ab6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_052_nodes_states_boot_mode_put_observer [0.080237s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a902cf7a-517c-4637-9f7f-529e7c8c4b1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_044_owner_manager_can_change_drivers [0.217648s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/driver', 'value': 'fake-hardware'}, {'op': 'replace', 'path': '/power_interface', 'value': 'fake'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-44f25b8d-6d96-41ad-af14-655ba5bb5119 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_063_nodes_states_boot_mode_put_admin [0.064518s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-6b484f9f-0b6a-439f-a682-9a663fb3e5fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_064_nodes_states_boot_mode_put_member [0.064112s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3f547b13-8414-4df7-a621-2ca786e94e00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interface_fields [0.594842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1 WITH [{'path': '/boot_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2c7d4502-b10a-4f1d-bd15-374dfe21c4e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "366a4fdc-84ee-4877-8099-2153c14d7dd1", "created_at": "2025-11-11T18:58:17.189501+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "bookmark"}]} PATCH /v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1 WITH [{'path': '/console_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-90499472-ba4a-417c-a1ba-5bb544e7d4c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "366a4fdc-84ee-4877-8099-2153c14d7dd1", "created_at": "2025-11-11T18:58:17.189501+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "****** ", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "bookmark"}]} PATCH /v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1 WITH [{'path': '/deploy_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-126bebbe-2aec-4995-8fef-b112e39a2b88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "366a4fdc-84ee-4877-8099-2153c14d7dd1", "created_at": "2025-11-11T18:58:17.189501+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "bookmark"}], "conductor": null, "alloca tion_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "bookmark"}]} PATCH /v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1 WITH [{'path': '/inspect_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7569834a-e45d-4c08-a7f4-35f88dadad38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "366a4fdc-84ee-4877-8099-2153c14d7dd1", "created_at": "2025-11-11T18:58:17.189501+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "bookmark"}]} PATCH /v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1 WITH [{'path': '/management_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d20f0b9e-ec33-4b46-91ed-fbe2f9170c17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "366a4fdc-84ee-4877-8099-2153c14d7dd1", "created_at": "2025-11-11T18:58:17.189501+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "bookmark"}]} PATCH /v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1 WITH [{'path': '/power_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6c554b78-6cf2-43c7-a48e-ca4451e32cee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "366a4fdc-84ee-4877-8099-2153c14d7dd1", "created_at": "2025-11-11T18:58:17.189501+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_ data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "bookmark"}]} PATCH /v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1 WITH [{'path': '/raid_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-43ce3490-6833-4d46-b9b3-17cf27644553 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "366a4fdc-84ee-4877-8099-2153c14d7dd1", "created_at": "2025-11-11T18:58:17.189501+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "self"}, {"href": "http://localhost/nodes/36 6a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "bookmark"}]} PATCH /v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1 WITH [{'path': '/vendor_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1a9bb493-009c-4eae-a02f-287b0326926b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "366a4fdc-84ee-4877-8099-2153c14d7dd1", "created_at": "2025-11-11T18:58:17.189501+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "self"}, {"href": "http://localhost/nodes/366a4fdc-84ee-4877-8099-2153c14d7dd1/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_053_nodes_states_secure_boot_put_admin [0.149735s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c76df2ed-e760-4aad-ba12-fbd9d8d3fc7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_065_nodes_states_boot_mode_put_reader [0.144955s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a33e541e-6822-4d0d-b0b6-0953ffe7d93b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_045_owner_member_can_patch_all_the_things [0.231597s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}, {'op': 'replace', 'path': '/driver_info', 'value': {'test': 'testing'}}, {'op': 'replace', 'path': '/properties', 'value': {'test': 'testing'}}, {'op': 'replace', 'path': '/network_data', 'value': {'links': [], 'networks': [], 'services': []}}, {'op': 'replace', 'path': '/name', 'value': 'meow-node-1'}, {'op': 'replace', 'path': '/retired', 'value': True}, {'op': 'replace', 'path': '/retired_reason', 'value': '43'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cec09d61-4d55-45ee-a0c0-6897892d5b97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_054_nodes_states_secure_boot_put_member [0.098223s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0828c18e-59cc-401b-a5ff-60efb170aee6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_055_nodes_states_secure_boot_put_observer [0.077873s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-31d49860-9479-4316-bd28-96592348640c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_046_owner_member_can_change_lessee [0.102455s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/lessee', 'value': '198566a5-a609-4463-9800-e8920be7c2fa'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8f887595-ce2c-4b1d-b675-7edce3c38559 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_066_nodes_states_secure_boot_put_admin [0.143050s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5dde1228-439f-45a7-a10c-5fcc21f5aafb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_056_nodes_states_provision_put_admin [0.073011s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-76497f9a-a2aa-4053-9859-2a7c36346eed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_047_lessee_admin_cannot_change_lessee [0.074337s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ee5759e6-c37c-41f7-9acc-9c2be493facd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_057_nodes_states_provision_put_member [0.066985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2646d9bb-c1ee-4a93-8919-aedb172c2da2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_048_lessee_manager_cannot_change_lessee [0.069144s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cd5e6748-1e76-4b3a-abe4-9b3714fb9d3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:lessee\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_067_nodes_states_secure_boot_put_member [0.135886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-325af496-58d1-4e6f-8966-975358e8578f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_058_nodes_states_provision_put_observer [0.072877s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fe1a24f3-c5a9-421a-8ade-3a259dc5594b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_not_supported [0.459523s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True WITH [{'path': '/driver', 'value': 'ipmi', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-47f5efdc-8cab-4c93-bbc8-bcd2a5a7bf5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_059_nodes_states_raid_put_admin [0.066547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cae7973a-89ee-407f-96d3-6c741a203ef8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_049_lessee_admin_cannot_change_owner [0.116173s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/owner', 'value': '1234'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-89196aaa-3f31-4ba2-a353-ff71a155dbf3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_without_driver [0.085194s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True WITH [{'path': '/name', 'value': 'new name', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-eb464f82-99af-4848-812a-9aacf11f1770 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The reset_interfaces parameter can only be used when changing the node's driver.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_068_nodes_states_secure_boot_put_reader [0.147093s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-eaf604f7-bd84-4161-a3a0-bc7d88545f2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_060_nodes_states_raid_put_member [0.063910s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a13e484b-8ad4-406f-bbd2-3a4423af4d55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_050_lessee_manager_cannot_change_owner [0.126005s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/owner', 'value': '1234'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6ecfae69-edaf-4f48-b639-bce2a76b10d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_069_nodes_states_provision_put_admin [0.095322s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4c3babef-8b18-468e-b7e3-e6c30d1ebe5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_061_nodes_states_raid_put_observer [0.098498s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-520dea90-2a87-46f7-abb2-75d90c64b2eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_070_nodes_states_provision_put_member [0.063812s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-be0ec796-e613-4d03-af6d-cb908490822a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_network_interface [0.197768s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc WITH [{'path': '/network_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d73cc523-793a-4c8a-b39b-b675ad2d3b8b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc", "created_at": "2025-11-11T18:58:18.346900+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc", "rel": "self"}, {"href": "http://localhost/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc/ports", "rel": "self"}, {"href": "http://localhost/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc/states", "rel": "self"}, {"href": "http://localhost/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc/volume", "rel": "self"}, {"href": "http://localhost/nodes/5c28a6fd-9675-4850-a9ed-bbd0c60ea7dc/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_051_owner_admin_can_change_lessee [0.131536s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-41fd925f-23e1-4070-8c90-30da175f0afe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_071_nodes_states_provision_put_reader [0.066086s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-820ebb5b-3b2c-4a30-8315-0c36dff395f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_062_nodes_states_console_get_admin [0.145794s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f5ce70dc-0c86-4707-b139-0504b461a6d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_storage_interface [0.103980s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63 WITH [{'path': '/storage_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-83e095ca-b0bf-4666-bdf1-05b44c90e911 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d746ec2a-c8f3-407c-bbe1-3298dddfcd63", "created_at": "2025-11-11T18:58:18.505549+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63", "rel": "self"}, {"href": "http://localhost/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63/ports", "rel": "self"}, {"href": "http://localhost/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63/states", "rel": "self"}, {"href": "http://localhost/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63/volume", "rel": "self"}, {"href": "http://localhost/nodes/d746ec2a-c8f3-407c-bbe1-3298dddfcd63/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_052_owner_manager_can_change_lessee [0.100071s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/lessee', 'value': '1234'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-6b264864-31fa-411d-8d59-9df8c95ec3d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_072_nodes_states_provision_put_service [0.106683s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4eaeae09-dd59-4548-95f6-43c9bd6a79b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_063_nodes_states_console_get_member [0.100959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4fea6915-4f08-4ebf-929d-e1c877167520 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_073_nodes_states_raid_put_admin [0.061957s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-831ab50f-44ed-47aa-8c32-eacc34cbac89 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_064_nodes_states_console_put_admin [0.066769s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-63cde5f7-e08e-4197-a16e-1cc28e5362b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_053_owner_admin_cannot_change_owner [0.127713s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/owner', 'value': '1234'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b7ae015e-cd4d-4dc0-8fec-027785aee677 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_074_nodes_states_raid_put_member [0.062023s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e3603a0a-970e-4cb9-9b62-c5ddfabec015 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_maintenance [0.163953s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/f11e62e3-0c66-4ccc-9e1d-82e901bf3532 WITH [{'path': '/instance_uuid', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-08daa62c-a1c0-4b48-9d85-afd917eb8f3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "f11e62e3-0c66-4ccc-9e1d-82e901bf3532", "created_at": "2025-11-11T18:58:18.624497+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": true, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": "power off", "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f11e62e3-0c66-4ccc-9e1d-82e901bf3532", "rel": "self"}, {"href": "http://localhost/nodes/f11e62e3-0c66-4ccc-9e1d-82e901bf3532", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f11e62e3-0c66-4ccc-9e1d-82e901bf3532/ports", "rel": "self"}, {"href": "http://localhost/nodes/f11e62e3-0c66-4ccc-9e1d-82e901bf3532/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_075_nodes_states_raid_put_reader [0.062336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c06e2cc4-3cd3-4616-a93d-a9857cd74220 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_054_owner_manager_cannot_change_owner [0.095662s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/owner', 'value': '1234'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-13dad494-1c5a-4a8d-bc30-bc878c8f6f72 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:owner\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_065_nodes_states_console_put_member [0.126676s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5599d496-e1cb-4860-8866-c9c50519e87f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_power_transition [0.102045s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/3eeb6d94-83ef-49a3-af01-c6028ab0d7da WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0dcf1301-f717-46df-a102-1ba3b1966ba7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "3eeb6d94-83ef-49a3-af01-c6028ab0d7da", "created_at": "2025-11-11T18:58:18.755937+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": "power off", "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/3eeb6d94-83ef-49a3-af01-c6028ab0d7da", "rel": "self"}, {"href": "http://localhost/nodes/3eeb6d94-83ef-49a3-af01-c6028ab0d7da", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/3eeb6d94-83ef-49a3-af01-c6028ab0d7da/ports", "rel": "self"}, {"href": "http://localhost/nodes/3eeb6d94-83ef-49a3-af01-c6028ab0d7da/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_076_nodes_states_console_get_admin [0.072047s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-207da969-b9d9-4e77-8411-af98d8c78742 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_055_lessee_member_can_set_protected [0.118211s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/protected', 'value': True}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c7ebab30-32dd-4a03-95a0-c5775b2fa524 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_077_nodes_states_console_get_member [0.061169s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-53cdff9c-0691-4748-947e-33797667692b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean [0.095429s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c WITH [{'path': '/automated_clean', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-54fdf861-633b-4bb1-bcc2-f3036f8c8062 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"uuid": "62e97dba-5aad-4dbc-abdb-208ba9bbc78c", "created_at": "2025-11-11T18:58:18.866395+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c", "rel": "self"}, {"href": "http://localhost/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c/ports", "rel": "self"}, {"href": "http://localhost/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c/states", "rel": "self"}, {"href": "http://localhost/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c/volume", "rel": "self"}, {"href": "http://localhost/nodes/62e97dba-5aad-4dbc-abdb-208ba9bbc78c/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_066_nodes_states_console_put_observer [0.152987s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9bcac613-227b-4851-a443-bd8af1c6a82d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_078_nodes_states_console_get_reader [0.062692s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6f40fbd5-5eac-4d58-866a-f9abd0302b05 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_old_api [0.060790s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/9c304716-ce9f-42d7-8813-92de15b8b050 WITH [{'path': '/automated_clean', 'value': True, 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-59a59ecf-55bf-4c5b-a45c-645e5e5cb502 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_056_lessee_member_cannot_patch_instance_info [0.099630s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-43b04235-595d-437c-8ed3-be77c233d1e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin [0.070340s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b65e2223-4bf3-42ad-b9b8-15378f6a7177 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean_with_false [0.056893s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/455a3d10-0afa-45b7-8782-e5913cb0892e WITH [{'path': '/automated_clean', 'value': False, 'op': 'replace'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5726388a-6c62-402a-8862-8d46bda94abe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: fake\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_by_name_unsupported [0.043169s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/node-57.1 WITH [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-29d6ee3a-31eb-46a4-bd7a-5c0d92e0d607 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node node-57.1 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member [0.068781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5afcbb32-358f-4659-a1e5-7133c93d449f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_057_lessee_member_cannot_patch_driver_info [0.156086s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/driver_info', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f639b73b-a10f-470e-9082-599abc92dfc1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:driver_info\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group [0.095251s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab WITH [{'path': '/conductor_group', 'value': 'foogroup', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-971500ca-8b99-4cd0-9b1b-cfec6252aeba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "15e255f4-b1e7-45fb-b5e9-f566800fe3ab", "created_at": "2025-11-11T18:58:19.128819+00:00", "updated_at": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab", "rel": "self"}, {"href": "http://localhost/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab/ports", "rel": "self"}, {"href": "http://localhost/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab/states", "rel": "self"}, {"href": "http://localhost/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab/volume", "rel": "self"}, {"href": "http://localhost/nodes/15e255f4-b1e7-45fb-b5e9-f566800fe3ab/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer [0.117305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d9542f33-2bc4-43ad-a6c5-a3cbbf4acaa5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_079_nodes_states_console_get_service [0.251134s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-fb4f67ea-093a-4507-bed1-971c49ae6fd5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group_old_api [0.055851s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/f19db2d7-96ff-48b5-9d4d-22f92743af0b WITH [{'path': '/conductor_group', 'value': 'foogroup', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-2fca3867-53de-48f5-bdd8-65d1c3fe146b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_058_lessee_member_cannot_patch_properties [0.081438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/properties', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f7a36f9a-94dc-4aef-8b97-cf96d5935709 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:properties\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_080_nodes_states_console_put_admin [0.065622s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f657f41c-faff-405e-8b48-e6dbf3287304 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_059_lessee_member_cannot_patch_network_data [0.078552s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/network_data', 'value': {'links': [], 'networks': [], 'services': []}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2f898a98-6387-4dea-bcae-0f76db165c5d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:network_data\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description [0.099180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/c9e7200f-6f76-4345-9b37-d54136090c08 WITH [{'path': '/description', 'value': 'meow', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cc50e67a-40fe-4cdf-b4ed-d6fd3c178ace X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.51 {"uuid": "c9e7200f-6f76-4345-9b37-d54136090c08", "created_at": "2025-11-11T18:58:19.274153+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/c9e7200f-6f76-4345-9b37-d54136090c08", "rel": "self"}, {"href": "http://localhost/nodes/c9e7200f-6f76-4345-9b37-d54136090c08", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c9e7200f-6f76-4345-9b37-d54136090c08/ports", "rel": "self"}, {"href": "http://localhost/nodes/c9e7200f-6f76-4345-9b37-d54136090c08/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c9e7200f-6f76-4345-9b37-d54136090c08/states", "rel": "self"}, {"href": "http://localhost/nodes/c9e7200f-6f76-4345-9b37-d54136090c08/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c9e7200f-6f76-4345-9b37-d54136090c08/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c9e7200f-6f76-4345-9b37-d54136090c08/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c9e7200f-6f76-4345-9b37-d54136090c08/volume", "rel": "self"}, {"href": "http://localhost/nodes/c9e7200f-6f76-4345-9b37-d54136090c08/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_081_nodes_states_console_put_member [0.065371s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-60022096-4c6e-4e82-9a6b-fa877fe50209 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_070_nodes_vendor_passthru_get_admin [0.152653s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-39b33fbb-fe83-4ca1-b3a8-2372ee56a6f6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description_oversize [0.052506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/46b9f71d-a32c-441c-ab90-53fa22225b9e WITH [{'path': '/description', 'value': '123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812 3456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b1183742-a430-47a0-87a1-67ac3ea09386 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.51 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update node with description exceeding 4096 characters\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_060_lessee_member_cannot_patch_name [0.087594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/name', 'value': 'meow-node-1'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-62e04d54-340e-42d4-b675-6d0bdd6addf5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:name\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_082_nodes_states_console_put_reader [0.071642s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-32a68ace-9c59-4d4b-beab-56efa7b53877 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver [0.086839s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/driver', 'value': 'bad-driver', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e3471d8b-bc06-401d-a0ad-9ca51ea653d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fake Error\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_071_nodes_vendor_passthru_get_member [0.115299s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-053cd0f7-bb2c-4d42-a32d-9eb087be1f98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_061_lessee_member_cannot_patch_retired [0.095949s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/retired', 'value': True}, {'op': 'replace', 'path': '/retired_reason', 'value': '43'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4ed8e3ef-49bc-4901-a99f-521964cbc27a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:retired\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_083_nodes_states_console_put_service [0.124417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b8373ecf-27f2-41ce-8411-ab847da09b8f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_072_nodes_vendor_passthru_get_observer [0.075080s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b32c7cea-ba13-477a-a727-9cfb01939023 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver_info [0.096412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/driver_info/this', 'value': 'foo', 'op': 'add'}, {'path': '/driver_info/that', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-17ff0e99-8248-4b6c-908f-1fb26c5c5b6b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Fake Error Message\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_on_disabled_bios_boot_mode [0.054303s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ WITH [{'path': '/properties/capabilities', 'value': 'boot_mode:bios', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-28ab2eb1-682f-41bd-9823-3ab385d72a5f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"'bios' boot mode is not allowed for provisioning operation.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_062_owner_admin_can_patch_node_instance_info [0.134283s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-52f412c3-5312-4528-90f4-b0b3536c1c1a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_073_nodes_vendor_passthru_post_admin [0.098295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a9462575-2f84-492b-8889-ff8023d9ea63 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_084_nodes_vendor_passthru_methods_get_admin [0.126488s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-32d96df3-c68f-436c-8083-f51186d41ec0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_on_disabled_uefi_boot_mode [0.066305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ WITH [{'path': '/properties/capabilities', 'value': 'boot_mode:uefi', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-90121660-0533-469f-81df-6c6e17125ea8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"'uefi' boot mode is not allowed for provisioning operation.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_074_nodes_vendor_passthru_post_member [0.070771s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4876e05b-05e8-40d1-a105-7acb5e0e2b2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_on_invalid_boot_mode [0.045728s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_063_owner_manager_can_patch_node_instance_info [0.112890s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-27fd7a6a-c416-41f9-a46b-1eb1f06fb9a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_075_nodes_vendor_passthru_post_observer [0.065959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-78fa1440-88c7-41f0-829e-382ce43847f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_085_nodes_vendor_passthru_methods_get_member [0.119214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-56ca4ca6-78c0-464b-9270-8ad893c66b76 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_086_nodes_vendor_passthru_methods_get_reader [0.067515s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f0459079-10b9-4bda-9804-5ff9d1360d34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_064_owner_member_can_patch_node_instance_info [0.127430s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-760d0acc-d7e3-46f5-a1df-872cd8159f26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_076_nodes_vendor_passthru_put_admin [0.143206s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-44c1f5b7-a1e1-4a40-8b87-18dfbfc8f23a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_087_nodes_vendor_passthru_get_admin [0.099809s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4a54059e-e604-450a-8a9e-521b1dac407d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_077_nodes_vendor_passthru_put_member [0.067849s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4108821b-023e-4edb-9cee-aecef9f5ad77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_065_owner_reader_can_patch_node_instance_info [0.142355s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8f07d6bf-f9cb-4746-a71f-1d776414edc6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_078_nodes_vendor_passthru_put_observer [0.077634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6baa24ad-15bc-48ff-88dc-0496b7733180 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_088_nodes_vendor_passthru_get_member [0.122899s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cb7439f4-81f8-48be-87df-3cc6548730e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_066_lessee_admin_can_patch_node_instance_info [0.106252s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c7e67fe2-bc45-44ae-9c0b-e0e2818e3479 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin [0.070890s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-362b29b8-6977-4aad-9f9b-9f8415d054ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_089_nodes_vendor_passthru_get_reader [0.123325s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-44774981-2e3a-4a07-a40a-aaf3b1bcc142 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_080_nodes_vendor_passthru_delete_member [0.067484s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-447e1297-8350-49c4-9a70-7f67ceb9f22a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_067_lessee_manager_can_patch_node_instance_info [0.121114s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-428b7404-1036-44a3-871e-dad1369fef58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_UPDATE_ALLOWED_STATES [0.539586s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/b06879a7-4c7c-4426-b5c1-5371297e99e8 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68668055-6c69-43a8-ab38-6ef55a20bd9a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "b06879a7-4c7c-4426-b5c1-5371297e99e8", "created_at": "2025-11-11T18:58:19.785250+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "deploy failed", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/b06879a7-4c7c-4426-b5c1-5371297e99e8", "rel": "self"}, {"href": "http://localhost/nodes/b06879a7-4c7c-4426-b5c1-5371297e99e8", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b06879a7-4c7c-4426-b5c1-5371297e99e8/ports", "rel": "self"}, {"href": "http://localhost/nodes/b06879a7-4c7c-4426-b5c1-5371297e99e8/ports", "rel": "bookmark"}]} PATCH /v1/nodes/55241523-13b9-4581-885e-0fec62386d11 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1778aff6-17f4-47d6-a74a-64ddc85a51c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "55241523-13b9-4581-885e-0fec62386d11", "created_at": "2025-11-11T18:58:19.847003+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "inspecting", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/55241523-13b9-4581-885e-0fec62386d11", "rel": "self"}, {"href": "http://localhost/nodes/55241523-13b9-4581-885e-0fec62386d11", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/55241523-13b9-4581-885e-0fec62386d11/ports", "rel": "self"}, {"href": "http://localhost/nodes/55241523-13b9-4581-885e-0fec62386d11/ports", "rel": "bookmark"}]} PATCH /v1/nodes/60628038-3ad7-4fd5-87c2-88fdea3c679d WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5560ae8c-37c5-4ee8-9a0f-66a7ebc8a1e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "60628038-3ad7-4fd5-87c2-88fdea3c679d", "created_at": "2025-11-11T18:58:19.891535+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "inspect failed", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/60628038-3ad7-4fd5-87c2-88fdea3c679d", "rel": "self"}, {"href": "http://localhost/nodes/60628038-3ad7-4fd5-87c2-88fdea3c679d", "rel": "bookmark"} ], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/60628038-3ad7-4fd5-87c2-88fdea3c679d/ports", "rel": "self"}, {"href": "http://localhost/nodes/60628038-3ad7-4fd5-87c2-88fdea3c679d/ports", "rel": "bookmark"}]} PATCH /v1/nodes/34cad7d0-9bed-41f4-8141-f1776d3f5d1d WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4dd737e4-9173-4c00-b1ac-3dcacb3bfe07 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "34cad7d0-9bed-41f4-8141-f1776d3f5d1d", "created_at": "2025-11-11T18:58:19.935999+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "inspecting", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/34cad7d0-9bed-41f4-8141-f1776d3f5d1d", "rel": "self"}, {"href": "http://localhost/nodes/34cad7d0-9bed-41f4-8141-f1776d3f5d1d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/34cad7d0-9bed-41f4-8141-f1776d3f5d1d/ports", "rel": "self"}, {"href": "http://localhost/nodes/34cad7d0-9bed-41f4-8141-f1776d3f5d1d/ports", "rel": "bookmark"}]} PATCH /v1/nodes/250049ff-26a5-43b2-8fe0-422c29659ac2 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b24fe146-1fe6-4365-a20f-2aad80d19550 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "250049ff-26a5-43b2-8fe0-422c29659ac2", "created_at": "2025-11-11T18:58:19.967467+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "clean failed", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/250049ff-26a5-43b2-8fe0-422c29659ac2", "rel": "self"}, {"href": "http://localhost/nodes/250049ff-26a5-43b2-8fe0-422c29659ac2", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/250049ff-26a5-43b2-8fe0-422c29659ac2/ports", "rel": "self"}, {"href": "http://localhost/nodes/250049ff-26a5-43b2-8fe0-422c29659ac2/ports", "rel": "bookmark"}]} PATCH /v1/nodes/186d770d-21d0-4c05-9e97-49057c689ce8 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c810a5bb-5b1f-488c-9b5e-317ba32ac128 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "186d770d-21d0-4c05-9e97-49057c689ce8", "created_at": "2025-11-11T18:58:20.000217+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "error", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_p rovision_state": "available", "links": [{"href": "http://localhost/v1/nodes/186d770d-21d0-4c05-9e97-49057c689ce8", "rel": "self"}, {"href": "http://localhost/nodes/186d770d-21d0-4c05-9e97-49057c689ce8", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/186d770d-21d0-4c05-9e97-49057c689ce8/ports", "rel": "self"}, {"href": "http://localhost/nodes/186d770d-21d0-4c05-9e97-49057c689ce8/ports", "rel": "bookmark"}]} PATCH /v1/nodes/a82cc2db-d84a-40eb-8c1e-28faf149a8bf WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-da1275f6-7da8-4132-b8cb-82f1da32152a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "a82cc2db-d84a-40eb-8c1e-28faf149a8bf", "created_at": "2025-11-11T18:58:20.033352+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "verifying", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/a82cc2db-d84a-40eb-8c1e-28faf149a8bf", "rel": "self"}, {"href": "http://localhost/nodes/a82cc2db-d84a-40eb-8c1e-28faf149a8bf", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a82cc2db-d84a-40eb-8c1e-28faf149a8bf/ports", "rel": "self"}, {"href": "http://localhost/nodes/a82cc2db-d84a-40eb-8c1e-28faf149a8bf/ports", "rel": "bookmark"}]} PATCH /v1/nodes/f021196b-64fa-44b2-8ce2-ae9329fe3d5b WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1d6a0155-7d6b-44a2-b0d4-f0ec70e7462a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "f021196b-64fa-44b2-8ce2-ae9329fe3d5b", "created_at": "2025-11-11T18:58:20.073915+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "adopt failed", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/f021196b-64fa-44b2-8ce2-ae9329fe3d5b", "rel": "self"}, {"href": "http://localhost/nodes/f021196b-64fa-44b2-8ce2-ae9329fe3d5b", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f021196b-64fa-44b2-8ce2-ae9329fe3d5b/ports", "rel": "self"}, {"href": "http://localhost/nodes/f021196b-64fa-44b2-8ce2-ae9329fe3d5b/ports", "rel": "bookmark"}]} PATCH /v1/nodes/32737213-004b-44d9-9d48-46386d836c72 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ca2e81bb-ae4d-487e-bb22-d2dd32234659 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "32737213-004b-44d9-9d48-46386d836c72", "created_at": "2025-11-11T18:58:20.108119+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "rescue failed", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/32737213-004b-44d9-9d48-46386d836c72", "rel": "self"}, {"href": "http://localhost/nodes/32737213-004b-44d9-9d48-46386d836c72", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/32737213-004b-44d9-9d48-46386d836c72/ports", "rel": "self"}, {"href": "http://localhost/nodes/32737213-004b-44d9-9d48-46386d836c72/ports", "rel": "bookmark"}]} PATCH /v1/nodes/b7807cec-f568-4ea4-a8e2-401a52eae71a WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-74d31c8c-76e8-43d5-b5c0-b7944f07ad14 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "b7807cec-f568-4ea4-a8e2-401a52eae71a", "created_at": "2025-11-11T18:58:20.141016+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "unrescue failed", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/b7807cec-f568-4ea4-a8e2-401a52eae71a", "rel": "self"}, {"href": "http://localhost/nodes/b7807cec-f568-4ea4-a8e2-401a52eae71a", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b7807cec-f568-4ea4-a8e2-401a52eae71a/ports", "rel": "self"}, {"href": "http://localhost/nodes/b7807cec-f568-4ea4-a8e2-401a52eae71a/ports", "rel": "bookmark"}]} PATCH /v1/nodes/67cbcbd7-603d-468d-9ee2-503680fdf9bd WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f30ee17a-a94a-49d0-8bb2-0c7da29534fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "67cbcbd7-603d-468d-9ee2-503680fdf9bd", "created_at": "2025-11-11T18:58:20.173720+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "service", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/67cbcbd7-603d-468d-9ee2-503680fdf9bd", "rel": "self"}, {"href": "http://localhost/nodes/67cbcbd7-603d-468d-9ee2-503680fdf9bd", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/67cbcbd7-603d-468d-9ee2-503680fdf9bd/ports", "rel": "self"}, {"href": "http://localhost/nodes/67cbcbd7-603d-468d-9ee2-503680fdf9bd/ports", "rel": "bookmark"}]} PATCH /v1/nodes/749a7ca6-8781-4109-b9c9-e20d6edf96ab WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b446ba1-3b11-486a-acfc-eb6c41001977 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "749a7ca6-8781-4109-b9c9-e20d6edf96ab", "created_at": "2025-11-11T18:58:20.203878+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_in fo": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "service hold", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/749a7ca6-8781-4109-b9c9-e20d6edf96ab", "rel": "self"}, {"href": "http://localhost/nodes/749a7ca6-8781-4109-b9c9-e20d6edf96ab", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/749a7ca6-8781-4109-b9c9-e20d6edf96ab/ports", "rel": "self"}, {"href": "http://localhost/nodes/749a7ca6-8781-4109-b9c9-e20d6edf96ab/ports", "rel": "bookmark"}]} PATCH /v1/nodes/942c9e36-621c-4cb8-94a8-cf0c0bff5fee WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2e31a8a-86d3-424b-8d43-0aeb8c2605d8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "942c9e36-621c-4cb8-94a8-cf0c0bff5fee", "created_at": "2025-11-11T18:58:20.238318+00:00", "updated_at": null, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "service failed", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": "available", "links": [{"href": "http://localhost/v1/nodes/942c9e36-621c-4cb8-94a8-cf0c0bff5fee", "rel": "self"}, {"href": "http://localhost/nodes/942c9e36-621c-4cb8-94a8-cf0c0bff5fee", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/942c9e36-621c-4cb8-94a8-cf0c0bff5fee/ports", "rel": "self"}, {"href": "http://localhost/nodes/942c9e36-621c-4cb8-94a8-cf0c0bff5fee/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_090_nodes_vendor_passthru_post_admin [0.117991s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-1ca43a96-32f6-4c35-8859-f80224d9a197 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_allowed [0.092627s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843 WITH [{'path': '/instance_uuid', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-32b1c304-5a4e-4d99-a655-d23a50a9d373 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"uuid": "4043b6ac-d9d7-41cb-a46d-d906f4180843", "created_at": "2025-11-11T18:58:20.324766+00:00", "updated_at": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "inspecting", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843", "rel": "self"}, {"href": "http://localhost/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843/ports", "rel": "self"}, {"href": "http://localhost/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843/states", "rel": "self"}, {"href": "http://localhost/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843/volume", "rel": "self"}, {"href": "http://localhost/nodes/4043b6ac-d9d7-41cb-a46d-d906f4180843/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_not_allowed [0.049484s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/bc2ead66-08b9-421d-a836-959f4a9d6009 WITH [{'path': '/instance_uuid', 'op': 'remove'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-a0107161-3d42-41e3-afab-c27e787e602e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.39 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update node \\\"bc2ead66-08b9-421d-a836-959f4a9d6009\\\" while it is in state \\\"inspecting\\\".\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_091_nodes_vendor_passthru_post_member [0.124825s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5553d023-b31c-48c5-ab30-f36365bc9c19 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer [0.354696s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2bd1aec4-37ce-4785-a08f-ef98a9f5f4ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_092_nodes_vendor_passthru_post_reader [0.141073s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2c927b54-9b59-43cc-af9f-f24a2823d964 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_082_nodes_traits_get_admin [0.069140s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fb2c761b-e95e-4d9a-a764-1fa8c94c1bee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"traits": ["trait1"]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_068_lessee_member_cannot_patch_node_instance_info [0.437717s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0ac2fc2b-7031-44c6-9e9e-122907f8e988 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_083_nodes_traits_get_member [0.064335s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6f380951-9203-4537-b8e0-d986643266a1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_093_nodes_vendor_passthru_put_admin [0.111037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5fa27905-e8fb-4e46-97ce-90da55cbd947 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_084_nodes_traits_get_observer [0.064843s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0c4e08d9-7e5b-4dac-b29e-551083046559 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"traits": ["trait1"]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_094_nodes_vendor_passthru_put_member [0.062956s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c5dc4ad3-078b-438f-a0e1-400e8fd8cfcc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields [0.419521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551 WITH [{'path': '/boot_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d5881faf-3f6e-4e8b-aaf6-2c0568c2152c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "610c47c7-fe93-4546-b940-62a21ee2c551", "created_at": "2025-11-11T18:58:20.467063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "bookmark"}]} PATCH /v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551 WITH [{'path': '/console_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8a808cb3-6d97-405f-9f4d-82b9845621ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "610c47c7-fe93-4546-b940-62a21ee2c551", "created_at": "2025-11-11T18:58:20.467063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "* *****", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "bookmark"}]} PATCH /v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551 WITH [{'path': '/deploy_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-77cb10fa-24fc-45f0-9d83-8aaed96a9cd7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "610c47c7-fe93-4546-b940-62a21ee2c551", "created_at": "2025-11-11T18:58:20.467063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel" : "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "bookmark"}]} PATCH /v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551 WITH [{'path': '/inspect_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-29dbe558-6fb6-46b2-a84e-20ead3611b18 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "610c47c7-fe93-4546-b940-62a21ee2c551", "created_at": "2025-11-11T18:58:20.467063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "bookmark"}]} PATCH /v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551 WITH [{'path': '/management_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ce00bfa4-6b58-47c1-b0f7-e05b5f76eabe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "610c47c7-fe93-4546-b940-62a21ee2c551", "created_at": "2025-11-11T18:58:20.467063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "bookmark"}]} PATCH /v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551 WITH [{'path': '/power_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2e4b08e3-ad6f-433b-9433-2d53c7329e56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "610c47c7-fe93-4546-b940-62a21ee2c551", "created_at": "2025-11-11T18:58:20.467063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": fals e, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "bookmark"}]} PATCH /v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551 WITH [{'path': '/raid_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5ab733e1-3b88-4a20-bfb0-f44a60750847 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "610c47c7-fe93-4546-b940-62a21ee2c551", "created_at": "2025-11-11T18:58:20.467063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/node s/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "bookmark"}]} PATCH /v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551 WITH [{'path': '/vendor_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-192d39e1-2dd9-4549-adb5-f879af4fa757 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "610c47c7-fe93-4546-b940-62a21ee2c551", "created_at": "2025-11-11T18:58:20.467063+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "self"}, {"href": "http://localhost/nodes/610c47c7-fe93-4546-b940-62a21ee2c551/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_069_lessee_reader_can_patch_node_instance_info [0.157419s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2249b16b-a0f2-4abf-834c-edd7fc1f319c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update_instance_info\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_095_nodes_vendor_passthru_put_reader [0.088014s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4177ab91-8ec9-49e1-bc41-566c710426df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_085_nodes_traits_put_admin [0.134824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4c024e82-1df0-427e-a2e5-637f1b78fc17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields_bad_version [0.076815s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/e4a35d7f-62ab-479e-9d04-a4eef3ecb741 WITH [{'path': '/boot_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e0c64ef7-2dae-4b10-81c3-f0ae9e6e079f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} PATCH /v1/nodes/e4a35d7f-62ab-479e-9d04-a4eef3ecb741 WITH [{'path': '/console_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-79d56908-ef39-450b-b77e-55bf1c426814 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} PATCH /v1/nodes/e4a35d7f-62ab-479e-9d04-a4eef3ecb741 WITH [{'path': '/deploy_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-47e4962c-fb94-42cd-8553-fd0edeedd613 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} PATCH /v1/nodes/e4a35d7f-62ab-479e-9d04-a4eef3ecb741 WITH [{'path': '/inspect_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-af3ae919-790b-4b98-9085-bbabf8536c78 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} PATCH /v1/nodes/e4a35d7f-62ab-479e-9d04-a4eef3ecb741 WITH [{'path': '/management_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-40c2a19c-6b7f-454e-987d-9527c68294af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} PATCH /v1/nodes/e4a35d7f-62ab-479e-9d04-a4eef3ecb741 WITH [{'path': '/power_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-c4e34531-f9ec-418c-a2b0-ec8312eaf926 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} PATCH /v1/nodes/e4a35d7f-62ab-479e-9d04-a4eef3ecb741 WITH [{'path': '/raid_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-760b7793-4f2e-4e62-90ef-6bb5deae66be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} PATCH /v1/nodes/e4a35d7f-62ab-479e-9d04-a4eef3ecb741 WITH [{'path': '/vendor_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-f2baac99-f1f3-4391-8d29-96d889fb623f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_070_third_party_admin_cannot_patch_node_instance_info [0.149235s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/instance_info', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-11519f4a-8d71-4543-81f3-ed16123b11f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_086_nodes_traits_put_member [0.101024s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-948d8f84-6b8e-4195-a9f2-ee54f776584b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_096_nodes_vendor_passthru_delete_admin [0.131498s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3793a6af-cce0-494c-ad39-8ce6869c5a32 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee [0.108741s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b WITH [{'path': '/lessee', 'value': 'new-project', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b1af1d89-c045-41a0-9726-4b0d2c92a005 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"uuid": "46f88a29-8077-4ff1-8c46-b9f59f0b368b", "created_at": "2025-11-11T18:58:20.956505+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b", "rel": "self"}, {"href": "http://localhost/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b/ports", "rel": "self"}, {"href": "http://localhost/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b/states", "rel": "self"}, {"href": "http://localhost/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b/volume", "rel": "self"}, {"href": "http://localhost/nodes/46f88a29-8077-4ff1-8c46-b9f59f0b368b/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_087_nodes_traits_put_observer [0.075636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-00abb9ec-cc0d-4005-8dfd-5a482dda4e48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_097_nodes_vendor_passthru_delete_member [0.075107s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d05518af-27e1-4deb-9b0a-5bee5a7fe5db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee_old_api [0.096915s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/ace84a8d-0be6-4b54-ad80-3694e28b95b6 WITH [{'path': '/lessee', 'value': 'new-project', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-c42ee6d7-85b7-405a-b887-4bf4ef70a9f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.64 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_071_owner_admin_cannot_delete_nodes [0.140650s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ca06493c-f8ed-4893-8fb1-3a8d179e34d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_098_nodes_vendor_passthru_delete_reader [0.059778s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-369d3026-84ab-491b-b8f3-c1cdb353c7ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_088_nodes_traits_delete_admin [0.074844s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-39284f14-19c3-4673-b7d4-8ce42c033912 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_099_nodes_traits_get_admin [0.079879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-807adc22-a1ee-480c-9a73-d7ea1bed4138 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"traits": ["trait1"]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_072_owner_admin_can_delete_nodes [0.149774s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e51237a7-5cee-44e1-bca8-782e687493fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data [0.163123s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c WITH [{'path': '/network_data', 'value': {'links': [{'id': 'interface2', 'type': 'vif', 'ethernet_mac_address': 'a0:36:9f:2c:e8:70', 'vif_id': 'e1c90e9f-eafc-4e2d-8ec9-58b91cebb53d', 'mtu': 1500}, {'id': 'interface0', 'type': 'phy', 'ethernet_mac_address': 'a0:36:9f:2c:e8:80', 'mtu': 9000}, {'id': 'interface1', 'type': 'phy', 'ethernet_mac_address': 'a0:36:9f:2c:e8:81', 'mtu': 9000}, {'id': 'bond0', 'type': 'bond', 'bond_links': ['interface0', 'interface1'], 'ethernet_mac_address': 'a0:36:9f:2c:e8:82', 'bond_mode': '802.3ad', 'bond_xmit_hash_policy': 'layer3+4', 'bond_miimon': 100}, {'id': 'vlan0', 'type': 'vlan', 'vlan_link': 'bond0', 'vlan_id': 101, 'vlan_mac_address': 'a0:36:9f:2c:e8:80', 'vif_id': 'e1c90e9f-eafc-4e2d-8ec9-58b91cebb53f'}], 'networks': [{'id': 'private-ipv4', 'type': 'ipv4', 'link': 'interface0', 'ip_address': '10.184.0.244', 'netmask': '255.255.240.0', 'routes': [{'network': '10.0.0.0', 'netmask': '255.0.0.0', 'gateway': '11.0.0.1'}, {'network': '0.0.0.0', 'netmask': '0.0.0.0', 'gateway': '23.253.157.1'}], 'network_id': 'da5bb487-5193-4a65-a3df-4a0055a8c0d7'}, {'id': 'private-ipv4', 'type': 'ipv6', 'link': 'interface0', 'ip_address': '2001:cdba::3257:9652/24', 'routes': [{'network': '::', 'netmask': '::', 'gateway': 'fd00::1'}, {'network': '::', 'netmask': 'ffff:ffff:ffff::', 'gateway': 'fd00::1:1'}], 'network_id': 'da5bb487-5193-4a65-a3df-4a0055a8c0d8'}, {'id': 'publicnet-ipv4', 'type': 'ipv4', 'link': 'vlan0', 'ip_address': '23.253.157.244', 'netmask': '255.255.255.0', 'dns_nameservers': ['69.20.0.164', '69.20.0.196'], 'routes': [{'network': '0.0.0.0', 'netmask': '0.0.0.0', 'gateway': '23.253.157.1'}], 'network_id': '62611d6f-66cb-4270-8b1f-503ef0dd4736'}], 'services': [{'type': 'dns', 'address': '8.8.8.8'}, {'type': 'dns', 'address': '8.8.4.4'}]}, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d57fcfb7-1644-42ab-a757-d77cb0fd49db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.66 {"uuid": "9907978d-ea2c-4947-b506-e19e9ffadd0c", "created_at": "2025-11-11T18:58:21.205313+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c", "rel": "self"}, {"href": "http://localhost/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c/ports", "rel": "self"}, {"href": "http://localhost/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9907978d-ea2c-4947-b506 -e19e9ffadd0c/states", "rel": "self"}, {"href": "http://localhost/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c/volume", "rel": "self"}, {"href": "http://localhost/nodes/9907978d-ea2c-4947-b506-e19e9ffadd0c/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_089_nodes_traits_delete_member [0.140636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a4d48412-9285-4987-9594-121fc76aafc4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_custom [0.081387s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a WITH [{'path': '/network_data', 'value': {'cat': 'meow'}, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bc9192e3-b613-4522-ab1f-14762a480303 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.66 {"uuid": "751eb835-09cb-4a47-97a2-ef3ee274a62a", "created_at": "2025-11-11T18:58:21.344126+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a", "rel": "self"}, {"href": "http://localhost/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a/ports", "rel": "self"}, {"href": "http://localhost/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a/states", "rel": "self"}, {"href": "http://localhost/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a/volume", "rel": "self"}, {"href": "http://localhost/nodes/751eb835-09cb-4a47-97a2-ef3ee274a62a/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_100_nodes_traits_get_member [0.139344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ea261eef-c495-40c2-98ec-22ceeef0b8e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"traits": ["trait1"]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_073_service_cannot_delete_owner_admin_nodes [0.147864s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7ed761b9-6b55-4d1f-97fd-1823f50d839d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_old_api [0.070929s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/417f5cfc-02b1-4949-9f6a-a2cf00db14f0 WITH [{'path': '/network_data', 'value': {'links': [{'id': 'interface2', 'type': 'vif', 'ethernet_mac_address': 'a0:36:9f:2c:e8:70', 'vif_id': 'e1c90e9f-eafc-4e2d-8ec9-58b91cebb53d', 'mtu': 1500}, {'id': 'interface0', 'type': 'phy', 'ethernet_mac_address': 'a0:36:9f:2c:e8:80', 'mtu': 9000}, {'id': 'interface1', 'type': 'phy', 'ethernet_mac_address': 'a0:36:9f:2c:e8:81', 'mtu': 9000}, {'id': 'bond0', 'type': 'bond', 'bond_links': ['interface0', 'interface1'], 'ethernet_mac_address': 'a0:36:9f:2c:e8:82', 'bond_mode': '802.3ad', 'bond_xmit_hash_policy': 'layer3+4', 'bond_miimon': 100}, {'id': 'vlan0', 'type': 'vlan', 'vlan_link': 'bond0', 'vlan_id': 101, 'vlan_mac_address': 'a0:36:9f:2c:e8:80', 'vif_id': 'e1c90e9f-eafc-4e2d-8ec9-58b91cebb53f'}], 'networks': [{'id': 'private-ipv4', 'type': 'ipv4', 'link': 'interface0', 'ip_address': '10.184.0.244', 'netmask': '255.255.240.0', 'routes': [{'network': '10.0.0.0', 'netmask': '255.0.0.0', 'gateway': '11.0.0.1'}, {'network': '0.0.0.0', 'netmask': '0.0.0.0', 'gateway': '23.253.157.1'}], 'network_id': 'da5bb487-5193-4a65-a3df-4a0055a8c0d7'}, {'id': 'private-ipv4', 'type': 'ipv6', 'link': 'interface0', 'ip_address': '2001:cdba::3257:9652/24', 'routes': [{'network': '::', 'netmask': '::', 'gateway': 'fd00::1'}, {'network': '::', 'netmask': 'ffff:ffff:ffff::', 'gateway': 'fd00::1:1'}], 'network_id': 'da5bb487-5193-4a65-a3df-4a0055a8c0d8'}, {'id': 'publicnet-ipv4', 'type': 'ipv4', 'link': 'vlan0', 'ip_address': '23.253.157.244', 'netmask': '255.255.255.0', 'dns_nameservers': ['69.20.0.164', '69.20.0.196'], 'routes': [{'network': '0.0.0.0', 'netmask': '0.0.0.0', 'gateway': '23.253.157.1'}], 'network_id': '62611d6f-66cb-4270-8b1f-503ef0dd4736'}], 'services': [{'type': 'dns', 'address': '8.8.8.8'}, {'type': 'dns', 'address': '8.8.4.4'}]}, 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-5c3e51db-aea2-4f02-aa18-577d42fd9edf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.62 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_090_nodes_traits_delete_observer [0.149151s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f4e54b89-3857-4051-b970-847a6532e92f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_wrong_format [0.055727s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/00a180c1-20a8-403c-a7c7-7176a11bcf69 WITH [{'path': '/network_data', 'value': {'cat': 'meow'}, 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d4332e71-1bd4-46d9-bee1-633a03012b5d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.66 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid network_data: 'links' is a required property \", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_101_nodes_traits_get_reader [0.144016s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5504f912-d98f-4b9e-bb7b-ed4a4d7ad04a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"traits": ["trait1"]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_074_service_can_delete_nodes_in_own_project [0.096056s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-40597686-0756-4273-816d-fcd25d89bdea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_091_nodes_traits_trait_put_admin [0.152313s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ee265f07-cf56-4e1d-94d3-eb3c67ab1c96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_075_owner_manager_cannot_delete_nodes [0.067072s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ffe0869f-138c-4b20-a651-292b5be46b49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface [0.124896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573 WITH [{'path': '/network_interface', 'value': 'flat', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b54797fc-8705-44df-99f6-23eb01aa5d23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "00c2f88f-4ee6-4f46-ba52-7a71aafb4573", "created_at": "2025-11-11T18:58:21.553824+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573", "rel": "self"}, {"href": "http://localhost/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573/ports", "rel": "self"}, {"href": "http://localhost/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573/states", "rel": "self"}, {"href": "http://localhost/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573/volume", "rel": "self"}, {"href": "http://localhost/nodes/00c2f88f-4ee6-4f46-ba52-7a71aafb4573/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_102_nodes_traits_put_admin [0.138873s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7ec07f70-0795-4a0c-a904-6511f8081194 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface_old_api [0.051512s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5ca0a547-8a13-424b-b6d6-94a525af2665 WITH [{'path': '/network_interface', 'value': 'flat', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-ca487dba-dd9a-4f36-ab3b-c4900619c19e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_076_lessee_admin_cannot_delete_nodes [0.092463s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bb5e9ad7-3631-4f0c-a77b-07a95cc3e5d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_092_nodes_traits_trait_put_member [0.143902s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-43ca1ea4-0bb0-4d7b-ad35-d40b16c2e430 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok [0.093578s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-42797e8b-0c33-4caa-9b0f-5cc129769105 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:21.718068+00:00", "updated_at": "2013-12-03T06:20:41.184720+00:00", "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": null, "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_077_lessee_manager_cannot_delete_nodes [0.075766s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-34a29c79-d305-4845-bacc-166d7c752f66 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:delete:self_owned_node\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_103_nodes_traits_put_member [0.139179s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8c933485-376a-419d-a262-6853d70dd80d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_078_third_party_admin_cannot_delete_nodes [0.063964s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-eb9bcfb6-e3d2-4106-b3b9-e6073af378c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_093_nodes_traits_trait_put_observer [0.131211s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-64e5a77f-a795-4a70-be85-e0fb10a7e49e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_079_owner_admin_can_validate_node [0.074163s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-0d62ed2a-6cd3-4e63-8451-410100320607 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_104_nodes_traits_put_reader [0.149186s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d2b1dcb8-dda4-4746-b88c-47d55df70060 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_080_owner_manager_can_validate_node [0.068291s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-77d033f0-0516-4373-b2fb-3e73e88b850a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_094_nodes_traits_trait_delete_admin [0.137362s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-960d0f61-c38b-40e4-970b-52e88b309b75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_081_lessee_admin_can_validate_node [0.062343s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4df9b91d-a2e4-4b56-b186-761285070bc2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name [0.293505s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/node-57.1 WITH [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-59886d9d-b1b1-400d-8314-227d7c9a3559 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:21.811211+00:00", "updated_at": "2013-12-03T06:20:41.184720+00:00", "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": "node-57.1", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_105_nodes_traits_delete_admin [0.130051s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a406947d-0466-4aad-80f5-34bb1058b2b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_082_lessee_manager_can_validate_node [0.063859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ca056b53-9bc5-41d4-9917-8d755696258b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_095_nodes_traits_trait_delete_member [0.142138s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e44f9352-e5d1-48df-b328-c0645e5a243c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name_with_json [0.140006s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/node-57.1.json WITH [{'path': '/instance_uuid', 'value': 'aaaaaaaa-1111-bbbb-2222-cccccccccccc', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f9603f91-a34e-4265-a604-438dd4142e29 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:22.105345+00:00", "updated_at": "2013-12-03T06:20:41.184720+00:00", "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": "node-57.1", "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "reservation": null, "target_power_state": null, "target_provision_state": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_106_nodes_traits_delete_member [0.136124s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e111559c-9d46-4464-b23d-c911a84e27ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_083_owner_member_can_validate_node [0.111865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-329b0b5e-ade0-4578-97c9-c5a8a5e701cf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_096_nodes_traits_trait_delete_observer [0.141073s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-af70ab7e-5986-4a64-840d-8a1eec5f50d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_084_lessee_member_cannot_validate_node [0.112858s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/validate WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8e327369-e22d-401a-a4e1-fc028b13f5fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:validate\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_107_nodes_traits_delete_reader [0.139579s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b87690db-5ee6-4089-a54a-62107c023b01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner [0.161715s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092 WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b442e122-f4e4-43d0-9dda-89539d81efe6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "c14d5ca8-850a-4d63-963c-af3f0f6fb092", "created_at": "2025-11-11T18:58:22.292847+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092", "rel": "self"}, {"href": "http://localhost/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092/ports", "rel": "self"}, {"href": "http://localhost/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092/states", "rel": "self"}, {"href": "http://localhost/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092/volume", "rel": "self"}, {"href": "http://localhost/nodes/c14d5ca8-850a-4d63-963c-af3f0f6fb092/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_085_third_party_admin_cannot_validate_node [0.062155s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/validate WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bf20a64e-58b7-4a7f-9137-6e10b7f2268a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_097_nodes_vifs_get_admin [0.132491s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f4aa36a8-46e0-4105-9063-a67fff87aa3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_086_owner_admin_can_set_maintenance [0.069672s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cae40cfc-d4f0-4e04-95ef-ae0291c6ef21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation [0.105056s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/453970ac-ab54-4260-8ef2-57f1912c0649 WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9266b032-2216-480f-9413-8f74bc8b0299 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "453970ac-ab54-4260-8ef2-57f1912c0649", "created_at": "2025-11-11T18:58:22.422530+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/453970ac-ab54-4260-8ef2-57f1912c0649", "rel": "self"}, {"href": "http://localhost/nodes/453970ac-ab54-4260-8ef2-57f1912c0649", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/453970ac-ab54-4260-8ef2-57f1912c0649/ports", "rel": "self"}, {"href": "http://localhost/nodes/453970ac-ab54-4260-8ef2-57f1912c0649/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/453970ac-ab54-4260-8ef2-57f1912c0649/states", "rel": "self"}, {"href": "http://localhost/nodes/453970ac-ab54-4260-8ef2-57f1912c0649/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/453970ac-ab54-4260-8ef2-57f1912c0649/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/453970ac-ab54-4260-8ef2-57f1912c0649/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/453970ac-ab54-4260-8ef2-57f1912c0649/volume", "rel": "self"}, {"href": "http://localhost/nodes/453970ac-ab54-4260-8ef2-57f1912c0649/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_108_nodes_traits_trait_put_admin [0.137129s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b8b50213-926f-48aa-aee0-4ec744eed9b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_087_owner_manager_can_set_maintenance [0.067879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-406a62c5-d389-4c34-91bc-774b4737d253 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation_owned [0.089167s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/77fdd0ab-a944-48da-90ce-90abba929cdc WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-7d9c5000-e53e-42fc-90ff-631695780628 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update owner of node \\\"77fdd0ab-a944-48da-90ce-90abba929cdc\\\" while it is allocated to an allocation with an owner.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_098_nodes_vifs_get_member [0.147736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6c7d1c42-6020-48a5-b31d-e110451a7dce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_088_lessee_admin_can_set_maintenance [0.067473s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cdc40400-0776-42b0-9b9f-3a62930cede9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_109_nodes_traits_trait_put_member [0.133557s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-59b3cbb9-e9f5-4b9c-8686-287f76a2a1b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_089_lessee_manager_can_set_maintenance [0.065039s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b61d72d8-1996-4a1a-be27-01ae276a4bc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_old_api [0.103982s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/4cdff17a-de5b-4a41-a4bc-47c4221ed34c WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-a5fe91c0-31f9-4ce3-8534-46a4b5795ae5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_099_nodes_vifs_get_observer [0.139244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ae8711cc-c839-46a4-b9bd-f6fd3a3322e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned [0.096023s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/436897e3-0255-4e38-a946-833cf5bebb4a WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a14c7ce3-ac80-4b4b-ada5-5eaf678211fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "436897e3-0255-4e38-a946-833cf5bebb4a", "created_at": "2025-11-11T18:58:22.721680+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/436897e3-0255-4e38-a946-833cf5bebb4a", "rel": "self"}, {"href": "http://localhost/nodes/436897e3-0255-4e38-a946-833cf5bebb4a", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/436897e3-0255-4e38-a946-833cf5bebb4a/ports", "rel": "self"}, {"href": "http://localhost/nodes/436897e3-0255-4e38-a946-833cf5bebb4a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/436897e3-0255-4e38-a946-833cf5bebb4a/states", "rel": "self"}, {"href": "http://localhost/nodes/436897e3-0255-4e38-a946-833cf5bebb4a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/436897e3-0255-4e38-a946-833cf5bebb4a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/436897e3-0255-4e38-a946-833cf5bebb4a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/436897e3-0255-4e38-a946-833cf5bebb4a/volume", "rel": "self"}, {"href": "http://localhost/nodes/436897e3-0255-4e38-a946-833cf5bebb4a/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_110_nodes_traits_trait_put_reader [0.140556s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-20b3b214-ce73-4e78-94dc-279185d3a2f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_090_owner_member_can_set_maintenance [0.157048s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-6806dd82-d0a7-4f41-af35-7fc6081b52e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_100_nodes_vifs_post_admin [0.142564s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-bd6368b9-a56c-496b-809d-574d57df899c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned_forbidden [0.098122s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5076a34a-6417-4f05-a45c-affdcdcca7ca WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-710036a1-b903-4cbf-8285-f37254067442 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update owner of node \\\"5076a34a-6417-4f05-a45c-affdcdcca7ca\\\" while it is in state \\\"active\\\".\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_111_nodes_traits_trait_delete_admin [0.140626s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c0fcf73a-3057-4b5f-9fa5-de2be1617acf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_091_lessee_member_cannot_set_maintenance [0.143469s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1f462e2c-2667-40db-80ec-a1cfe2265423 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_maintenance\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_101_nodes_vifs_post_member [0.141588s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b532c2c6-835d-4cbc-b64f-4174b2f27f43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_112_nodes_traits_trait_delete_member [0.126761s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5e098588-adef-4874-9541-df1502f76b26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected [0.175616s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a WITH [{'path': '/protected', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e084572d-a01b-4ef7-b967-21dee5e64a79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "c7299c99-f715-4d60-aba2-1d4bbc44a43a", "created_at": "2025-11-11T18:58:22.965170+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a", "rel": "self"}, {"href": "http://localhost/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a/ports", "rel": "self"}, {"href": "http://localhost/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a/states", "rel": "self"}, {"href": "http://localhost/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a/volume", "rel": "self"}, {"href": "http://localhost/nodes/c7299c99-f715-4d60-aba2-1d4bbc44a43a/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_092_third_party_admin_cannot_set_maintenance [0.081091s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d37ecd17-ae84-412a-b732-a62878732fb9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_093_owner_admin_can_unset_maintenance [0.063667s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-2161e19e-529f-4fa5-a420-a6fe02bbabb6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_102_nodes_vifs_post_observer [0.132721s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-da0ec004-dad0-41b1-87bb-f7907e8edc1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_old_api [0.096276s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/6ceaa27e-231d-4791-b650-2fd33340b0bf WITH [{'path': '/protected', 'value': True, 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-f45a51d4-a4e1-436e-8b6b-e21081da3184 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_113_nodes_traits_trait_delete_reader [0.143755s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8acb7a21-56e4-4dd9-adba-24b2fc4f3b71 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin [0.068505s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-30716a94-7a04-458a-a2ee-830934f31645 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_094_owner_manager_can_unset_maintenance [0.146030s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7e9fc040-2bf8-423d-9c24-7d6e42e093c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member [0.074495s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d85fcc4a-a434-4c21-8f08-8939eee0b148 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_reason [0.191989s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e WITH [{'path': '/protected_reason', 'value': 'reason!', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-20ef9137-e9a0-4960-aa41-05805719bcb6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "20bf930f-49dc-46a5-bfdc-6b6cefdebc6e", "created_at": "2025-11-11T18:58:23.240470+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": true, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e", "rel": "self"}, {"href": "http://localhost/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e/ports", "rel": "self"}, {"href": "http://localhost/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e/states", "rel": "self"}, {"href": "http://localhost/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e/volume", "rel": "self"}, {"href": "http://localhost/nodes/20bf930f-49dc-46a5-bfdc-6b6cefdebc6e/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer [0.073564s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cb37d4a4-2cb1-4ebb-810a-752140394385 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_remove [0.078809s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf WITH [{'op': 'remove', 'path': '/protected'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7517d3c9-f92b-4e70-a026-0cdf6bb7bac1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "f2f721d9-f959-443b-bdd6-ca3d5eb49dbf", "created_at": "2025-11-11T18:58:23.393586+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf", "rel": "self"}, {"href": "http://localhost/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf/ports", "rel": "self"}, {"href": "http://localhost/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf/states", "rel": "self"}, {"href": "http://localhost/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf/volume", "rel": "self"}, {"href": "http://localhost/nodes/f2f721d9-f959-443b-bdd6-ca3d5eb49dbf/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_106_nodes_management_indicators_get_admin [0.074747s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e1a0363b-4645-4a56-a9c7-63140b9d7f5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_095_lessee_admin_can_unset_maintenance [0.146096s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-85ce60e0-6100-4c3f-a189-e318f859ae58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string [0.080613s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6 WITH [{'path': '/protected', 'value': 'True', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-509d6183-6543-4671-ae7e-b6caf1974f55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "5a7b2195-bfd1-4686-8b2d-d106d94629c6", "created_at": "2025-11-11T18:58:23.474467+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6", "rel": "self"}, {"href": "http://localhost/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6/ports", "rel": "self"}, {"href": "http://localhost/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6/states", "rel": "self"}, {"href": "http://localhost/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6/volume", "rel": "self"}, {"href": "http://localhost/nodes/5a7b2195-bfd1-4686-8b2d-d106d94629c6/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_107_nodes_management_indicators_get_member [0.076316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-71e6e6bc-a9a5-46d0-8844-5627f35e0971 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string_invalid [0.076174s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/d4a3a947-52e3-46d7-85ec-c62ab1eec524 WITH [{'path': '/protected', 'value': 'YeahNahGood', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-99b45e25-4142-4517-bc89-19777d99b06b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid protected: Unrecognized value 'YeahNahGood', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_108_nodes_management_indicators_get_observer [0.074648s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-936bd201-a973-4e05-904b-57d260ec3f78 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_096_lessee_manager_can_unset_maintenance [0.144343s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-bfb16015-28d0-4d0f-89a3-07198271db15 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_109_nodes_management_indicators_component_get_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_114_nodes_vifs_get_admin [0.502647s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-75ec8b0f-4e7e-4afc-b8ae-b1eff3ff8274 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_110_nodes_management_indicators_component_ind_ident_get_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_097_owner_member_can_unset_maintnenance [0.152737s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/maintenance GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-931c3d22-c319-42dd-9ee9-8093411638f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_with_reason [0.197701s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20 WITH [{'path': '/protected', 'value': True, 'op': 'replace'}, {'path': '/protected_reason', 'value': 'reason!', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2279c3f2-be84-4490-8540-f8cf3f94fa65 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "2ec28a3a-f582-44c7-b8c4-14f2303a5b20", "created_at": "2025-11-11T18:58:23.679412+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20", "rel": "self"}, {"href": "http://localhost/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20/ports", "rel": "self"}, {"href": "http://localhost/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20/states", "rel": "self"}, {"href": "http://localhost/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20/volume", "rel": "self"}, {"href": "http://localhost/nodes/2ec28a3a-f582-44c7-b8c4-14f2303a5b20/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_111_nodes_management_indicators_component_ind_ident_put_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_115_nodes_vifs_get_member [0.140501s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4ac66965-4604-4241-8bce-f58d7ede6662 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class [0.101403s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/e9628132-abf5-447e-aa0d-06c0042fc109 WITH [{'path': '/resource_class', 'value': 'foo', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6bfd1299-377d-40fc-8f4e-449e7ad0d9da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"uuid": "e9628132-abf5-447e-aa0d-06c0042fc109", "created_at": "2025-11-11T18:58:23.835613+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/e9628132-abf5-447e-aa0d-06c0042fc109", "rel": "self"}, {"href": "http://localhost/nodes/e9628132-abf5-447e-aa0d-06c0042fc109", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e9628132-abf5-447e-aa0d-06c0042fc109/ports", "rel": "self"}, {"href": "http://localhost/nodes/e9628132-abf5-447e-aa0d-06c0042fc109/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e9628132-abf5-447e-aa0d-06c0042fc109/states", "rel": "self"}, {"href": "http://localhost/nodes/e9628132-abf5-447e-aa0d-06c0042fc109/states", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_112_portgroups_get_admin [0.072300s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f8c90829-7005-4881-b240-4361f104e28b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_098_lessee_member_cannot_unset_maintenance [0.147046s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8a983182-f9b3-44df-8544-daeb17073bd2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:clear_maintenance\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_113_portgroups_get_member [0.064654s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-686637ca-5e55-4ae4-bc9d-397ddf7a366e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_max_length [0.094647s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/88151ac1-5562-4387-8c71-0ccdf0d45c76 WITH [{'path': '/resource_class', 'value': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2f78a13b-a524-46a0-abc5-1db99a80fb99 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"uuid": "88151ac1-5562-4387-8c71-0ccdf0d45c76", "created_at": "2025-11-11T18:58:23.936465+00:00", "updated_at": null, "clean_step": {}, "console_enabled": false, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "inspection_finished_at": null, "inspection_started_at": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "name": null, "network_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "reservation": null, "resource_class": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "links": [{"href": "http://localhost/v1/nodes/88151ac1-5562-4387-8c71-0ccdf0d45c76", "rel": "self"}, {"href": "http://localhost/nodes/88151ac1-5562-4387-8c71-0ccdf0d45c76", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/88151ac1-5562-4387-8c71-0ccdf0d45c76/ports", "rel": "self"}, {"href": "http://localhost/nodes/88151ac1-5562-4387-8c71-0ccdf0d45c76/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/88151ac1-5562-4387-8c71-0ccdf0d45c76/states", "rel": "self"}, {"href": "http://localhost/nodes/88151ac1-5562-4387-8c71-0ccdf0d45c76/states", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_116_nodes_vifs_get_reader [0.122106s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-fc29650b-5abb-46ca-b0b4-40bbb3000017 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_099_third_party_admin_cannot_unset_maintenance [0.148336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/fe5b3e8a-837b-453b-babb-b5506fa738b0/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-78f3186b-4cc0-4d6e-a713-87327181e102 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fe5b3e8a-837b-453b-babb-b5506fa738b0 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_old_api [0.073210s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/35734794-2800-4f31-a4f6-5b99998612df WITH [{'path': '/resource_class', 'value': 'foo', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-6cb061c1-43a3-4248-a7e7-3ef52a62cc55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.20 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_117_nodes_vifs_get_service [0.066292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-02952d66-6b9b-4bb3-8662-99b2aef7b6f6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_118_nodes_vifs_post_admin [0.061761s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ee5405aa-6a7b-4ff1-983b-b0ca325c01b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_too_long [0.084813s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/976f30f5-f6ed-4618-97dd-0d7c95b42ae7 WITH [{'path': '/resource_class', 'value': 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-25da0e4f-b792-4f5b-a982-d613cb24d375 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff' is too long\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_100_owner_admin_can_set_boot_device [0.142511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c36a51d8-e71b-4eba-8a87-cf22d997c64c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_119_nodes_vifs_post_member [0.128391s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-28d7fbee-8f20-49ba-814c-0d90b2588efd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_114_portgroups_get_observer [0.319103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e87bd438-8445-47fc-9023-40998b4b534e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired [0.168886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9 WITH [{'path': '/retired', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6742ed51-573c-410f-98a5-d7482e90df3f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "21bcd96b-e235-412b-bf8c-71f9b81cf6e9", "created_at": "2025-11-11T18:58:24.201022+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9", "rel": "self"}, {"href": "http://localhost/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9/ports", "rel": "self"}, {"href": "http://localhost/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9/states", "rel": "self"}, {"href": "http://localhost/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9/volume", "rel": "self"}, {"href": "http://localhost/nodes/21bcd96b-e235-412b-bf8c-71f9b81cf6e9/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_101_owner_manager_can_set_boot_device [0.147620s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a1a9383b-db36-40c9-93f0-bd7944cb682f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_115_portgroups_post_admin [0.083362s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/30572d49-62ca-4057-8b31-328c30e4137e Openstack-Request-Id: req-f0a77ff3-add4-4f6a-b6a2-f3c55d752e2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "30572d49-62ca-4057-8b31-328c30e4137e", "created_at": "2025-11-11T18:58:24.372884+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "links": [{"href": "http://localhost/v1/portgroups/30572d49-62ca-4057-8b31-328c30e4137e", "rel": "self"}, {"href": "http://localhost/portgroups/30572d49-62ca-4057-8b31-328c30e4137e", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/30572d49-62ca-4057-8b31-328c30e4137e/ports", "rel": "self"}, {"href": "http://localhost/portgroups/30572d49-62ca-4057-8b31-328c30e4137e/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_120_nodes_vifs_post_reader [0.146534s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7a093379-0e0b-4cf5-a62c-e852d6ff4245 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_old_api [0.113322s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/b8f17e3b-4794-4b50-affe-3e37ce8e778e WITH [{'path': '/retired', 'value': True, 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-32692afd-e0f1-4ce8-9c0a-5faa92a977bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_116_portgroups_post_member [0.079125s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fd5ad6ca-621d-4e6f-a90e-467f0bb0cefe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_117_portgroups_post_observer [0.070033s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b22b1150-d30f-4c59-915b-f172ad3a080e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_121_nodes_vifs_post_service [0.150072s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c2c1f65f-0603-4acb-aabe-2b488720860e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_102_lessee_admin_cannot_set_boot_device [0.241925s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a1b2dc5c-bcea-4120-92cf-e2c3db28599e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_118_portgroups_detail_get_admin [0.070641s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-08ea38eb-36f1-48e5-ae2a-999396c58bbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:24.570923+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_reason [0.197110s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7 WITH [{'path': '/retired_reason', 'value': 'a better reason', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8a9e4cd3-7f5b-4acc-92b1-917dc632e9bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "7c17b6bf-c598-48f1-978c-9a7e392a95d7", "created_at": "2025-11-11T18:58:24.524740+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": true, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7", "rel": "self"}, {"href": "http://localhost/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7/ports", "rel": "self"}, {"href": "http://localhost/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7/states", "rel": "self"}, {"href": "http://localhost/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7/volume", "rel": "self"}, {"href": "http://localhost/nodes/7c17b6bf-c598-48f1-978c-9a7e392a95d7/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_119_portgroups_detail_get_member [0.077699s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-64b75ee1-1cba-404c-900d-8b0bc3d1db8e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_122_nodes_vifs_post_service_project [0.152304s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d277460e-5213-483c-9407-838a432f2f42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_103_lessee_manager_cannot_set_boot_device [0.160231s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7a2f290e-da0a-4c2f-9732-910cf5010eba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_remove [0.186243s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b WITH [{'op': 'remove', 'path': '/retired'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-429065da-e115-4a4f-909b-419fa6cf0c60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "f262ec77-0a03-4250-85ee-b6a818c1e34b", "created_at": "2025-11-11T18:58:24.722957+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b", "rel": "self"}, {"href": "http://localhost/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b/ports", "rel": "self"}, {"href": "http://localhost/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b/states", "rel": "self"}, {"href": "http://localhost/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b/volume", "rel": "self"}, {"href": "http://localhost/nodes/f262ec77-0a03-4250-85ee-b6a818c1e34b/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_104_owner_member_cannot_set_boot_device [0.074478s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a0ba9bf5-1050-4f48-a08a-628c47b8128a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_120_portgroups_detail_get_observer [0.146186s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-25abcf54-1a63-4043-986e-7653ab3eeec1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:24.766660+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_123_nodes_vifs_node_vif_ident_delete_admin [0.145032s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-74e9a0b7-893e-4be4-8ddd-0ad3b8e7bff7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_105_lessee_member_cannot_set_boot_device [0.071696s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-344aafa6-71db-417a-9888-ba2c821618a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_device\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin [0.083915s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-66458772-21ed-45b3-999b-54b4d890f9e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:24.882765+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_106_third_party_admin_cannot_set_boot_device [0.075112s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-82416142-d109-428a-b28b-3989fe98b3e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_124_nodes_vifs_node_vif_ident_delete_member [0.136831s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b6aa96af-67f6-483a-b02b-c0feee3dd778 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_122_portgroups_portgroup_ident_get_member [0.079081s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3a130c1d-10d7-4e13-93af-72fbbcb5d931 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_with_reason [0.186622s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614 WITH [{'path': '/retired', 'value': True, 'op': 'replace'}, {'path': '/retired_reason', 'value': 'a better reason', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4d7980b8-3aa6-4b58-8dda-cbf31ae0d962 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "e7b797ea-afeb-4d8e-8e2e-072c463e4614", "created_at": "2025-11-11T18:58:24.902547+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_interface": null, "owner": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "active", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614", "rel": "self"}, {"href": "http://localhost/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614/ports", "rel": "self"}, {"href": "http://localhost/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614/states", "rel": "self"}, {"href": "http://localhost/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614/volume", "rel": "self"}, {"href": "http://localhost/nodes/e7b797ea-afeb-4d8e-8e2e-072c463e4614/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_107_owner_admin_can_get_boot_device [0.080905s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-0a94d140-9a8b-427c-858f-e5e861a0036d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_state [0.092404s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'power_state': 'new state'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7a19abcd-0baa-451b-af7b-5327f0741ca4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: Additional properties are not allowed ('power_state' was unexpected)\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_125_nodes_vifs_node_vif_ident_delete_reader [0.133740s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6ff97d40-dc7a-41fc-87b3-a17a8828e561 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_108_owner_manager_can_get_boot_device [0.083390s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-af4d450c-a098-4c1b-a28a-aadcf4aebb87 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer [0.164307s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f9f71760-308a-45fc-9341-691b98bfe766 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:25.073200+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_109_lessee_admin_cannot_get_boot_device [0.067006s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1e7715be-7782-4314-bbfe-5686f48c7e57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_126_nodes_vifs_node_vif_ident_delete_service [0.129018s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-2bc843ef-8f84-4baf-84d7-7f3962f9dc45 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface [0.168420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214 WITH [{'path': '/storage_interface', 'value': 'cinder', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-776e3e66-7f8a-4c27-be90-c92ae320610a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c79fd0f2-3aa8-47d5-93d4-12296a494214", "created_at": "2025-11-11T18:58:25.173069+00:00", "updated_at": null, "automated_clean": null, "bios_interface": null, "boot_interface": null, "boot_mode": null, "clean_step": {}, "conductor_group": "", "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "description": null, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "firmware_interface": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "lessee": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": null, "network_data": {}, "network_interface": null, "owner": null, "parent_node": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "protected": false, "protected_reason": null, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "retired": false, "retired_reason": null, "secure_boot": null, "service_step": {}, "shard": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214", "rel": "self"}, {"href": "http://localhost/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214/ports", "rel": "self"}, {"href": "http://localhost/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214/states", "rel": "self"}, {"href": "http://localhost/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214/volume", "rel": "self"}, {"href": "http://localhost/nodes/c79fd0f2-3aa8-47d5-93d4-12296a494214/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin [0.115701s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4f2f4a26-091a-4c48-aa7b-364207bb5d47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member [0.069085s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-78a78533-bb75-4c2e-a602-1407b3a99d7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface_old_api [0.095540s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/742de8fb-b597-4286-8bbf-b9a4c7d643bc WITH [{'path': '/storage_interface', 'value': 'cinder', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-dd3f640c-6a3d-49af-bb11-5f804d3305ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_127_nodes_management_indicators_get_allow ... SKIPPED: Not implemented yet {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_110_owner_member_cannot_get_boot_device [0.151803s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2c25a238-0c07-4882-817b-e666f399bb2b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer [0.069221s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3a828a3a-3c0a-45b6-b84f-7c14cafc5cf6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_traits [0.094078s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5956424c-d835-4a20-96e5-e6198b36d8ee WITH [{'path': '/traits', 'value': ['CUSTOM_1'], 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a7b3542e-1f11-49f7-955e-d6402cdf291b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /traits. Only the following can be updated: automated_clean, bios_interface, boot_interface, chassis_uuid, conductor_group, console_interface, deploy_interface, description, driver, driver_info, extra, inspect_interface, instance_info, instance_uuid, lessee, maintenance, management_interface, name, network_data, network_interface, owner, power_interface, properties, protected, protected_reason, raid_interface, rescue_interface, resource_class, retired, retired_reason, shard, storage_interface, vendor_interface, parent_node, firmware_interface\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_128_nodes_management_indicators_component_get_allow ... SKIPPED: Not implemented yet {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_111_lessee_member_cannot_get_boot_device [0.098042s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-15120bd2-b7ea-427e-adb0-2aba6e9d6f31 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin [0.138874s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-64166a8e-328a-4fb3-8116-6e1375027405 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_112_owner_reader_cannot_get_boot_device [0.063464s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-95d8bd5e-60a7-4c45-80b3-875252ad6b61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_with_reset_interfaces [0.130292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123?reset_interfaces=True WITH [{'path': '/driver', 'value': 'ipmi', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2ecd6bec-cc6e-441a-ac22-f361bb41af0d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.45 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "created_at": "2025-11-11T18:58:25.513488+00:00", "updated_at": "2013-12-03T06:20:41.184720+00:00", "bios_interface": null, "boot_interface": null, "clean_step": {}, "console_enabled": false, "console_interface": null, "deploy_interface": null, "deploy_step": {}, "driver": "fake-hardware", "driver_info": {"foo": "bar", "fake_password": "******"}, "driver_internal_info": {"private_state": "secret value"}, "extra": {}, "fault": null, "inspection_finished_at": null, "inspection_started_at": null, "inspect_interface": null, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "instance_uuid": null, "last_error": null, "maintenance": false, "maintenance_reason": null, "management_interface": null, "name": "node-57.1", "network_interface": null, "power_interface": null, "power_state": null, "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "provision_state": "available", "provision_updated_at": null, "raid_config": {}, "raid_interface": null, "rescue_interface": null, "reservation": null, "resource_class": null, "storage_interface": null, "target_power_state": null, "target_provision_state": null, "target_raid_config": {}, "traits": [], "vendor_interface": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_chassis_notification [0.018783s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_129_nodes_management_indicators_component_ind_ident_get_allow ... SKIPPED: Not implemented yet {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_113_lessee_reader_cannot_get_boot_device [0.063103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7e982a47-8934-451a-9933-18bb895deaeb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_common_params [0.018618s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_emit_maintenance_notification [0.018448s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_maintenance_notification [0.040527s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification [0.019843s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_114_third_party_admin_cannot_get_boot_device [0.084227s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/b780014d-817d-47cf-a7b9-7492d0f6245c/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-917d9bc1-8d3e-4454-b15d-313a398aa5d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node b780014d-817d-47cf-a7b9-7492d0f6245c could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member [0.151896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7d68b714-d5fb-4e1c-87ad-dddee61e5591 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification_mask_secrets [0.018959s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_130_nodes_management_indicators_component_ind_ident_put_allow ... SKIPPED: Not implemented yet {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_port_notification [0.020319s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_portgroup_notification [0.020107s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestListPortsByShard.test_get_by_shard_multi [0.047763s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?shard=shard1,shard2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-491e27f3-3a7e-4b10-a6e4-cda20f49a5a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"ports": [{"uuid": "9300855b-5b7d-4d0b-81b7-4f735e173c86", "address": "aa:bb:cc:dd:ee:ff", "links": [{"href": "http://localhost/v1/ports/9300855b-5b7d-4d0b-81b7-4f735e173c86", "rel": "self"}, {"href": "http://localhost/ports/9300855b-5b7d-4d0b-81b7-4f735e173c86", "rel": "bookmark"}]}, {"uuid": "1ef93f52-5e5e-49dc-8d17-17647673a5f0", "address": "ab:bb:cc:dd:ee:ff", "links": [{"href": "http://localhost/v1/ports/1ef93f52-5e5e-49dc-8d17-17647673a5f0", "rel": "self"}, {"href": "http://localhost/ports/1ef93f52-5e5e-49dc-8d17-17647673a5f0", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_115_owner_admin_can_get_supported_boot_devices [0.133511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f87ed241-17ee-472c-b18a-c9b873ce778a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestListPortsByShard.test_get_by_shard_single [0.035058s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?shard=test_shard WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2a84eeb4-2bda-4b22-9547-86b9741d306a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.82 {"ports": [{"uuid": "2bcd4d2c-fecb-4903-88d6-04e88c852a5a", "address": "aa:bb:cc:dd:ee:ff", "links": [{"href": "http://localhost/v1/ports/2bcd4d2c-fecb-4903-88d6-04e88c852a5a", "rel": "self"}, {"href": "http://localhost/ports/2bcd4d2c-fecb-4903-88d6-04e88c852a5a", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_131_portgroups_get_admin [0.137652s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d6505a0c-b764-4df5-8046-b703038ee62a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer [0.156524s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7939f4ad-26ab-4bc2-a0d0-0c8428aa884d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestListPortsByShard.test_get_by_shard_single_fail_api_version [0.032170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?shard=test_shard WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-4af19b53-a704-42de-bdd7-cce6a9abefb3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable. The minimal required API version should be 1.82\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_116_owner_manager_can_get_supported_boot_devices [0.076896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-32d64f56-1e09-4a01-9286-d0c4890851e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_117_owner_member_cannot_get_supported_boot_devices [0.062902s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8c595435-fae1-442a-8bed-3c960c8acf6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_132_portgroups_get_member [0.142998s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0da9ba93-fdfd-4276-9858-80fca334f30b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_130_nodes_portgroups_get_admin [0.159009s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8dc1e4e6-bd2d-43d5-8ea9-841aa464d86f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_118_lessee_admin_cannot_get_supported_boot_devices [0.063145s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-18068d1e-81d8-4048-a766-297001671e91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_119_lessee_manager_cannot_get_supported_boot_devices [0.062130s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/boot_device/supported WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0c0ba0c7-a6b5-4e26-9403-fe86b4b007bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_boot_device\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_133_portgroups_get_reader [0.142594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-833d574e-4045-4e83-b009-5c389736f291 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_131_nodes_portgroups_get_member [0.124578s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-745f2a5a-37de-4f3c-bf21-6e0fd75dd79c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_120_third_party_admin_cannot_get_supported_boot_devices [0.063747s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/boot_device/supported WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-840a2c98-8c6b-45f2-963c-9a15eea1afa4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type [0.328477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/local_link_connection/network_type', 'value': 'unmanaged', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1be6a218-7150-40b1-9a67-4ba99832f28a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.64 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:25.911458+00:00", "updated_at": "2025-11-11T18:58:26.212191+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1", "network_type": "unmanaged"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_134_portgroups_post_admin [0.081521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/8d5ebc61-6f91-441b-b086-3aaa9502718e Openstack-Request-Id: req-7f7d075b-4e09-45f1-be99-cd2ceb62dba2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8d5ebc61-6f91-441b-b086-3aaa9502718e", "created_at": "2025-11-11T18:58:26.238889+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "node_uuid": "18a552fb-dcd2-43bf-9302-e4c93287be11", "links": [{"href": "http://localhost/v1/portgroups/8d5ebc61-6f91-441b-b086-3aaa9502718e", "rel": "self"}, {"href": "http://localhost/portgroups/8d5ebc61-6f91-441b-b086-3aaa9502718e", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/8d5ebc61-6f91-441b-b086-3aaa9502718e/ports", "rel": "self"}, {"href": "http://localhost/portgroups/8d5ebc61-6f91-441b-b086-3aaa9502718e/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type_old_api [0.035771s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/local_link_connection/network_type', 'value': 'unmanaged', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e5ee9d1f-41a2-4c60-a1c2-95ca6ccf8c17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.63 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_multi [0.060130s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'value': 'bar1', 'op': 'add'}, {'path': '/extra/foo2', 'value': 'bar2', 'op': 'add'}, {'path': '/extra/foo3', 'value': 'bar3', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a31125b2-24f3-4c91-8634-d31f7351efcc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:26.276193+00:00", "updated_at": "2025-11-11T18:58:26.309412+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo1": "bar1", "foo2": "bar2", "foo3": "bar3"}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_135_portgroups_post_member [0.079969s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7de84274-b438-4161-853c-d3eaf196b544 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_132_nodes_portgroups_get_observer [0.157519s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8a9cd84f-186c-4b10-b8c1-057ac265fcd1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_id [0.035537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'value': '1', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8a3bf883-3c0c-457f-b92d-c09afb7069f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: address, extra, is_smartnic, local_link_connection, node_uuid, physical_network, portgroup_uuid, pxe_enabled, name\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_121_owner_admin_can_send_non_masking_interrupt [0.170540s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-512352cd-3e3d-474b-88bf-1c5430e3248d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_122_owner_manager_can_send_non_masking_interrupt [0.065562s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/inject_nmi WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ed6c02eb-50b6-40bf-a46d-b68ac2b5c6aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_uuid [0.098216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8d4bc2f-4216-4573-8748-697788c42463 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:26.383626+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_136_portgroups_post_reader [0.151039s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-56165cf6-55c9-434d-bb89-496722417293 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_133_nodes_portgroups_detail_get_admin [0.147998s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-58c0b3e4-6876-4d53-b03f-7719dac49f23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:26.403773+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network [0.061848s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2e3bbcb4-55b1-464e-9ffe-5c52124a125b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:26.472518+00:00", "updated_at": "2025-11-11T18:58:26.504339+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": "physnet1", "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_123_lessee_admin_cannot_send_non_masking_interrupt [0.104485s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e25ec8e5-f471-4035-b3d9-f391b789b3ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_old_api_version [0.038830s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-3e64f1cf-564a-4bb0-af53-68707edaa6fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_124_lessee_manager_cannot_send_non_masking_interrupt [0.065699s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/inject_nmi WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b523f046-7e74-40cc-9ad3-53fab48dd169 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:inject_nmi\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_physical_network_upgrade [0.038623s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': 'physnet1', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-647aa631-3ef8-4dc1-a3b5-dffd675762c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_134_nodes_portgroups_detail_get_member [0.140527s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e003244b-ce8b-414a-98ca-bd5b65dc7777 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_137_portgroups_detail_get_admin [0.146951s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f5c15b8c-81c1-476a-a7fb-da175b3f1284 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:26.573384+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_125_third_party_admin_cannot_send_non_masking_interrupt [0.065157s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/24fb1545-9e99-4d99-aa6f-daf5ee9d9655/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5c5c7f40-3df6-48ab-9328-5685dec766d8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 24fb1545-9e99-4d99-aa6f-daf5ee9d9655 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_138_portgroups_detail_get_member [0.064172s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-630ab09b-eeae-496d-926e-bb20ca4aa73d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:26.662898+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_portgroup_uuid [0.125092s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': '511137ec-a77b-48ae-9e46-00263b41813a', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-43141263-f8eb-4e1e-9f3a-ca8d2d708d47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:26.612378+00:00", "updated_at": "2025-11-11T18:58:26.697363+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "511137ec-a77b-48ae-9e46-00263b41813a"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_126_owner_reader_get_states [0.102453s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c58e39de-4f13-49b6-afb4-01bead1236d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"console_enabled": false, "last_error": "meow", "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_139_portgroups_detail_get_reader [0.063841s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-751a1481-e573-496f-bd56-652751b935c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:26.728751+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_135_nodes_portgroups_detail_get_observer [0.153250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-027cfd18-ed08-41db-8ba4-3a82695c2e53 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:26.689971+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root [0.116584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1b390e88-3181-449d-b96c-7484eb266e7b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:26.762400+00:00", "updated_at": "2025-11-11T18:58:26.827411+00:00", "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_140_portgroups_portgroup_ident_get_admin [0.069065s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f8b30c15-c0f1-416c-8a8b-10d102b1bf9e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:26.796731+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_136_ports_get_admin [0.087980s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-04d3df10-b1c3-4b7b-b1fc-728efdfde65b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root_non_existent [0.037651s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a19ff6d3-42a3-409b-a083-618966508705 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: address, extra, is_smartnic, local_link_connection, node_uuid, physical_network, portgroup_uuid, pxe_enabled, name\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_127_lessee_reader_get_states [0.153772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a32f20c3-4d48-4ef4-942e-668a10cce00c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"console_enabled": false, "last_error": "meow", "power_state": null, "provision_state": "available", "target_power_state": null, "target_provision_state": null, "provision_updated_at": null, "raid_config": {}, "target_raid_config": {}, "boot_mode": null, "secure_boot": null} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_empty_string [0.058173s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': '', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-11da7919-fb6a-416b-a025-ddacd7f25225 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A non-empty value is required when setting physical_network\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_137_ports_get_member [0.069917s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-470b23cd-9b41-4b92-952a-dfed0627437d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_141_portgroups_portgroup_ident_get_member [0.118974s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ff81b415-b547-4b9a-86cd-6fbf4798009d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:26.922421+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_138_ports_get_observer [0.068535s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-13700c2a-e743-4472-93e8-790e7ba92c8d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_non_text [0.093276s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': 1234, 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-564923ff-4ee2-453c-a7e3-fdfdeac70293 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 1234 is not of type 'string', 'null'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_142_portgroups_portgroup_ident_get_reader [0.074166s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4b9124a6-38a5-4016-9031-d09b6bea0c57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:27.003934+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_128_third_part_admin_cannot_get_states [0.136724s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/5806fd58-6a55-4e86-add6-4a688f13f718/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cb424301-d2d3-4bac-9a50-231fd6c2f556 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 5806fd58-6a55-4e86-add6-4a688f13f718 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_139_ports_post_admin [0.073439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4234a687-be04-4cad-ab70-bfb502a8aea1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_too_long [0.100637s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c3e5038f-f4e1-4f0c-be2a-a05d18c12678 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp' is too long\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_143_portgroups_portgroup_ident_patch_admin [0.103072s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b2dd030a-ca1d-479a-b51f-782fbc13eae2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_140_ports_post_member [0.078544s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-eaed2c9b-8e28-4ba8-a408-94f787696d6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_129_owner_admin_can_put_power_state_change [0.134894s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3b2306f2-c673-444f-aa2c-58e308460990 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_144_portgroups_portgroup_ident_patch_member [0.071071s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-331ff15d-4a79-4eb3-b5ce-cfe88a2c5cf1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_portgroups_subresource_patch [0.099912s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/b17ba381-d865-4a3c-8929-80ab011536c3 WITH [{'path': '/address', 'value': '00:00:00:00:00:00', 'op': 'replace'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0ed26163-173a-4ab0-8f97-eac3a258861d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Operation not permitted.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_141_ports_post_observer [0.104483s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-26be5757-d71b-42a0-afe1-9f9c7cd7f98e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_145_portgroups_portgroup_ident_patch_reader [0.065979s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e662fb1d-0fb2-495a-98fc-82219dfba5df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_130_owner_manager_can_put_power_state_change [0.148907s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4314a692-e2e3-4c02-bfd8-8690a7478660 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_146_portgroups_portgroup_ident_delete_admin [0.065553s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b2df8a94-4a32-4019-8f0a-9aaf8caa0c8f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type [0.137859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/e953ff1f-ff92-4eab-b36d-ffc6dc9a1c6d WITH [{'path': '/local_link_connection/network_type', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d31bb22e-092a-4f40-9d03-feaa5087a6bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.64 {"uuid": "e953ff1f-ff92-4eab-b36d-ffc6dc9a1c6d", "created_at": "2025-11-11T18:58:27.286625+00:00", "updated_at": "2025-11-11T18:58:27.358021+00:00", "address": "bb:bb:bb:bb:bb:bb", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/e953ff1f-ff92-4eab-b36d-ffc6dc9a1c6d", "rel": "self"}, {"href": "http://localhost/ports/e953ff1f-ff92-4eab-b36d-ffc6dc9a1c6d", "rel": "bookmark"}], "portgroup_uuid": null} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_142_ports_detail_get_admin [0.090971s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d9986fe2-1991-4af3-b198-0add50832bdc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:27.325015+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_147_portgroups_portgroup_ident_delete_member [0.075435s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-998a368f-fe60-41a0-a501-32efb3178741 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type_old_api [0.086103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/local_link_connection/network_type', 'op': 'remove'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-d90ed1f3-041e-49e1-a664-2849a6a93cf1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.63 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_143_ports_detail_get_member [0.084351s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-428ece28-1d34-45d5-a0c7-fd72166679b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_131_lessee_admin_can_put_power_state_change [0.135565s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d4669cf7-425d-4a47-b21a-f53f7d36aedc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_148_portgroups_portgroup_ident_delete_reader [0.065644s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-92e5e420-7d6a-4ae4-b999-ac5272e8d73f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_old_api [0.073259s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/local_link_connection/switch_id', 'op': 'remove'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-9b42c1ff-072c-42e2-9ac8-3720aab3d069 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_144_ports_detail_get_observer [0.080629s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-57403430-8a10-4085-9942-05ca4ab72705 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:27.496511+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_149_nodes_portgroups_get_admin [0.069801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-eb1daa6d-4ac3-4fd0-85e4-a345a3a56d9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_132_lessee_manager_can_put_power_state_change [0.141645s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b44a806a-a9e4-4c6c-9608-54647d989d15 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_145_ports_port_id_get_admin [0.080668s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c1c9ca2a-535e-4730-9474-cd9e0df40c21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:27.577362+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_mandatory_field [0.099984s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/address', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-73383996-a888-4416-9734-330483da88f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'address' is a required property\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_150_nodes_portgroups_get_member [0.069344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f97a000d-7b40-4bba-b201-9c37584289bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_146_ports_port_id_get_member [0.080860s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-be8e4524-4ec0-46f5-a63c-7c46cb212049 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_151_nodes_portgroups_get_reader [0.066249s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd573472-876f-4fd2-9178-257487855d8c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_133_owner_member_can_put_power_state_change [0.128595s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-618775a7-94b8-4453-8b6c-dbd4d1f949e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_multi [0.195241s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a16fa714-f37e-419b-bdf8-82e0b7f26e01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:27.667969+00:00", "updated_at": "2025-11-11T18:58:27.753848+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo2": "bar2", "foo3": "bar3"}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-375b3303-3960-4db8-82da-53a764d6315b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:27.667969+00:00", "updated_at": "2025-11-11T18:58:27.814395+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_134_lessee_member_can_put_power_state_change [0.112242s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power WITH {'target': 'power on'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5957f6c8-3685-4263-9768-6c06cd60e65a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_node_id [0.061013s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1bb116c9-0a98-4fab-b7ca-d0c233ddc24a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: address, extra, is_smartnic, local_link_connection, node_uuid, physical_network, portgroup_uuid, pxe_enabled, name\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_135_owner_reader_cannot_put_power_state_change [0.075295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/power WITH {'target': 'power on'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cc4ea599-84b2-4fd5-8a0a-7a6631e0de76 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_non_existent_property_fail [0.077982s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4bd4722a-22a5-4f7e-943e-f11d9923395e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/extra/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_152_nodes_portgroups_get_service [0.293586s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-32afad39-01e1-4545-88c6-9bafbf8b2283 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_136_lessee_reader_cannot_put_power_state_change [0.121234s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/power WITH {'target': 'power on'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0ce2b0c5-4719-485c-bb66-82b7d429c4c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_power_state\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_153_nodes_portgroups_get_service_project [0.071248s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b8dd27af-2876-41b0-acf8-7c6c68e09536 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network [0.125542s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f9d4693-2a69-4ea0-bf51-f47c5027cbcf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:28.014514+00:00", "updated_at": "2025-11-11T18:58:28.079556+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_147_ports_port_id_get_observer [0.405445s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8f408b3b-cb6b-42c4-9c0c-e1a9b855e5b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:27.739917+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_154_nodes_portgroups_detail_get_admin [0.067336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d2c95c4c-6e32-4c6c-8810-795e15a2fd8c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:28.102955+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_old_api_version [0.071577s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'op': 'remove'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-07589243-6f1b-4b63-a61f-8acd7cd28fb9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_155_nodes_portgroups_detail_get_member [0.079353s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9490a220-3056-4058-ad6c-4a12c5368c8f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:28.170148+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_upgrade [0.058127s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'op': 'remove'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-79dc4faa-6692-444d-9030-f239c0de2795 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_uuid [0.051932s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d845f49a-eddd-4711-aedd-255789327716 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: address, extra, is_smartnic, local_link_connection, node_uuid, physical_network, portgroup_uuid, pxe_enabled, name\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_148_ports_port_id_patch_admin [0.203464s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-704ee9fb-45e3-4f55-a861-4231ac7a0a60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_137_third_party_admin_cannot_put_power_state_change [0.263160s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/8447e01b-1407-4e50-aff9-57af21b22c5b/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3fa7d10f-b943-499c-8f72-7ce2957c7d08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 8447e01b-1407-4e50-aff9-57af21b22c5b could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_address_already_exist [0.065057s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/address', 'value': 'aa:aa:aa:aa:aa:aa', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-1cd3dc3c-69ea-43b1-a068-fb1438112499 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A port with MAC address aa:aa:aa:aa:aa:aa already exists.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_156_nodes_portgroups_detail_get_reader [0.135605s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-df864663-5027-42a6-879f-78af8f50ab06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:28.273334+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_138_owner_admin_can_put_boot_mode_state_change [0.071326s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-9a058a4b-992c-4b30-9618-573539435d10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_local_link_connection [0.068245s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/local_link_connection/switch_id', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be1b3a6f-ced7-489e-9208-c5bb97749830 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.19 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:28.368747+00:00", "updated_at": "2025-11-11T18:58:28.405426+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "aa:bb:cc:dd:ee:ff", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_139_owner_manager_can_put_boot_mode_state_change [0.066014s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-1abdba35-7a1b-419f-9419-4b2e1dcd8266 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_149_ports_port_id_patch_member [0.148328s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c44bb99c-d94b-4750-a195-9c2e224b219d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_multi [0.075996s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo1', 'value': 'bar1x', 'op': 'replace'}, {'path': '/extra/foo2', 'value': 'bar2x', 'op': 'replace'}, {'path': '/extra/foo3', 'value': 'bar3x', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-36b54ac6-fbb8-4ebc-a16c-50fa357d084d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:28.435542+00:00", "updated_at": "2025-11-11T18:58:28.479449+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo1": "bar1x", "foo2": "bar2x", "foo3": "bar3x"}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_157_nodes_portgroups_detail_get_service [0.142345s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-52a25265-93e8-48ec-95e9-945d5264c730 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4", "created_at": "2025-11-11T18:58:28.420662+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_140_lessee_admin_can_put_boot_mode_state_change [0.067407s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7f2a963b-e40f-4b6f-94f0-182badcaa20a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_id [0.041890s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_id', 'value': '1', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5d511f6c-78e4-4859-abd3-d240c61f3e77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /node_id. Only the following can be updated: address, extra, is_smartnic, local_link_connection, node_uuid, physical_network, portgroup_uuid, pxe_enabled, name\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_141_lessee_manager_can_put_boot_mode_state_change [0.072875s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-1f6cdb13-51a1-4427-858b-ee9c87c40624 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_uuid [0.076030s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5672ea74-a153-4527-9bf7-dd6521a3aa10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:28.568316+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_150_ports_port_id_patch_observer [0.152443s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-499f199a-67e7-48df-a10a-2496c7bc01ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_158_nodes_portgroups_detail_get_service_project [0.134542s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cb25cfd1-e97d-4bcd-9a46-0187da3c42a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_non_existent_node_uuid [0.048600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/node_uuid', 'value': '12506333-a81c-4d59-9987-889ed5f8687b', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-abad7384-1ef2-44e5-96e2-5db3f20eaa06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 12506333-a81c-4d59-9987-889ed5f8687b could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_142_owner_member_can_put_boot_mode_state_change [0.068177s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-2d793059-3054-49a4-96b2-ed53b2835b0f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_143_lessee_member_can_put_boot_mode_state_change [0.067527s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode WITH {'target': 'uefi'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ad03efbc-1da7-4261-b5fc-a27447ce526c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network [0.079147s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c80a367f-71d2-42e7-b214-d119bab8e853 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:28.686290+00:00", "updated_at": "2025-11-11T18:58:28.723986+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": "physnet2", "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_151_ports_port_id_delete_admin [0.144949s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7ad2530e-c20a-412b-b018-32daf406d2c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_159_ports_get_admin [0.142729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4b8b51c5-2bbe-4220-b3fb-eebf489f38dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_old_api_version [0.057135s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-66610715-959a-4b53-8bc4-98e63e1410e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.33 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_144_owner_reader_cannot_put_boot_mode_state_change [0.069897s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/boot_mode WITH {'target': 'uefi'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-960d5a0a-16a5-4db7-a81a-3a2832596336 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_upgrade [0.063593s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/physical_network', 'value': 'physnet2', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-14c60f4e-f6bb-44f2-a70f-43a0d684b2af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.34 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_145_lessee_reader_cannot_put_boot_mode_state_change [0.065228s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/boot_mode WITH {'target': 'uefi'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-df253ad8-2e3d-4e55-928c-fcb5be5bae42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_boot_mode\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_152_ports_port_id_delete_member [0.142170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bb3a195d-dd33-496b-b745-eab818dccc58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_160_ports_get_service [0.139525s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a94a65c-3722-4d98-bb08-b12652c53c7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_146_third_party_admin_cannot_put_boot_mode_state_change [0.066278s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/73dd030d-6bab-4daf-bbcd-8c5b81d00b7f/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ee4b7ece-54bd-4cc2-a7bf-b7ee82eebb08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 73dd030d-6bab-4daf-bbcd-8c5b81d00b7f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid [0.097429s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': 'f72fee86-7687-4f72-ad83-0c68d8a99314', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e5b04688-7589-4c00-816a-4179b2b7c1c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:28.896194+00:00", "updated_at": "2025-11-11T18:58:28.957012+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "f72fee86-7687-4f72-ad83-0c68d8a99314"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_147_owner_admin_can_put_secure_boot_state_change [0.065378s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-1c88edf8-cf69-43ca-88df-17bcb314cb65 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_old_api [0.044097s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': '1599019b-6481-4a84-a803-b310b357898b', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-dd64ff67-16eb-4449-82e0-9ccd65d398d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_161_ports_get_service_project [0.127592s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6ea3d0b2-a68d-4ba7-acc8-8c537613c4e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_153_ports_port_id_delete_observer [0.144526s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dc712967-6c4f-47f6-9fba-617760db18ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_148_owner_manager_can_put_secure_boot_state_change [0.066958s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-bc653307-dc0b-4059-9e23-ac4727b6056e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove [0.072902s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': 'fb01d09a-9605-4a5b-8b97-9f1f5dac1f8e', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-70d7277e-ca4c-48a8-bc5d-b55fc5840f4d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.039628+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_149_lessee_admin_can_put_secure_boot_state_change [0.064777s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b3c86d6a-e316-4fc3-a55d-a5aae7f6b591 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove_add [0.079101s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': '63e3c718-41d8-43e3-8bdb-81a1a10807a7', 'op': 'remove'}, {'path': '/portgroup_uuid', 'value': 'c731baf8-0c66-4679-aaf8-e520eea41095', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8938e2bf-8fa6-4615-891d-db12ccb68625 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.111323+00:00", "updated_at": "2025-11-11T18:58:29.157626+00:00", "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": "c731baf8-0c66-4679-aaf8-e520eea41095"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_162_ports_get_service_project_disabled [0.134250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b65eb838-b389-423e-a9d1-816926059751 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_154_nodes_ports_get_admin [0.150322s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2ba58a5f-5f8f-46d9-a800-b41522908a1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_150_lessee_manager_can_put_secure_boot_state_change [0.069397s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f78dee75-d301-43a4-ad8b-2b71b76eb122 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_singular [0.063019s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/address', 'value': 'aa:bb:cc:dd:ee:ff', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9b72d1f8-4f40-43bf-a230-d70745447f95 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.190816+00:00", "updated_at": "2025-11-11T18:58:29.224162+00:00", "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_set_pxe_enabled_false_old_api [0.036525s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/pxe_enabled', 'value': False, 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-c4f12d60-3dfa-441e-964b-53c75660fb93 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_151_owner_member_can_put_secure_boot_state_change [0.069107s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-6436a3cb-3863-4bef-8e70-8a010e7f5051 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_163_ports_get_member [0.127000s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dba1f13b-f700-4e67-9d75-1433ebc9836f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_address_invalid_format [0.071254s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/address', 'value': 'invalid-format', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8f7cb9fb-105c-4103-8508-c2054337dc0a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected valid MAC address for address: invalid-format\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_152_lessee_member_can_put_secure_boot_state_change [0.065438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot WITH {'target': 'true'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cb6f432d-4c64-4c6c-8d60-a2f9162e0acc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_155_nodes_ports_get_member [0.144652s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-51381911-3aed-4c21-b224-8ae53bfa3d72 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byaddress_not_allowed [0.036944s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/52:54:00:cf:2d:31 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cd968c89-a05d-4ad2-a3c3-78b2e6d4e76b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID or name for port_ident: 52:54:00:cf:2d:31\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_153_owner_reader_cannot_put_secure_boot_state_change [0.082632s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/secure_boot WITH {'target': 'true'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6402d98c-b6ce-4bf6-af0a-178259ad6d3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_164_ports_get_reader [0.124363s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a3afd849-7ed8-4bcf-b50d-0db90a9e9d53 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byid [0.083783s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fcd82636-2f13-47cb-bb0d-88713df44726 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.412704+00:00", "updated_at": "2025-11-11T18:58:29.445987+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo": "bar"}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_156_nodes_ports_get_observer [0.140824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e7168eb4-d13b-4297-b1a1-eceb2b2b7af9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_154_lessee_reader_cannot_put_secure_boot_state_change [0.076189s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/secure_boot WITH {'target': 'true'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3c935279-3d60-47d1-a9f0-0b9ef71cfc01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_secure_boot\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_155_third_party_admin_cannot_put_secure_boot_state_change [0.061969s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/676cdf33-84f5-4a10-a96e-a249ae9c000b/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a9468ee4-f18e-4540-96dc-edb0ccab125f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 676cdf33-84f5-4a10-a96e-a249ae9c000b could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_allowed [0.106214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8bb6c9e0-9c6b-4f4d-aaae-8aa244bbc800 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.488772+00:00", "updated_at": "2025-11-11T18:58:29.564980+00:00", "address": "52:54:00:cf:2d:31", "extra": {"foo": "bar"}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_165_ports_post_admin [0.137120s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0e75cf14-5d1e-4a4b-8781-6b3288d03a30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 68a552fb-dcd2-43bf-9302-e4c93287be16 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_156_owner_admin_can_change_provision_state [0.066042s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-77a33c00-22eb-4e1c-8570-dc859a9c7345 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_157_nodes_ports_detail_get_admin [0.148927s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-77b39c07-66e7-41f6-bc6a-787c2fd7d581 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.565991+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_157_owner_manager_can_change_provision_state [0.065772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a141e499-65cf-442a-874a-3b8a4d2d48d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_166_ports_post_member [0.141388s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '22e26c0b-03f2-4d2e-ae87-c02d7f33c000', 'address': '03:04:05:06:07:08'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1d288a74-628a-46d4-a2a9-729f21fae85e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_158_nodes_ports_detail_get_member [0.139670s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-00b07b9f-c416-4398-bd99-2b9788a8fb09 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_158_owner_member_can_change_provision_state [0.142613s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a27cd572-1960-403e-90ed-94fcf54a637d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_167_ports_post_reader [0.142585s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e7f013c4-54a6-4977-9fd5-903f08593ab3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_not_allowed [0.301518s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-4e9f54ca-f5b4-4254-9516-bbe83f9164e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.39 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot update port \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c781\\\" on \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"inspecting\\\".\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_not_found [0.037364s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/a386fea7-ea85-484e-9e53-10116fac4175 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1957d629-7964-4436-8efa-99b15f0a0643 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port a386fea7-ea85-484e-9e53-10116fac4175 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_159_nodes_ports_detail_get_observer [0.161696s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c4ba7a59-060b-4c20-87e7-f820e198a8d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.870567+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_159_lessee_admin_can_change_provision_state [0.127029s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-512f88b4-0d8f-4c2a-91d0-e7ffdf53e9db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_168_ports_detail_get_admin [0.133871s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2190e3fc-234c-44e9-9b77-959544b09a14 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.936490+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_port_address_normalized [0.090808s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/address', 'value': 'AA:BB:CC:DD:EE:FF', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e2ad251e-2f42-4bea-92d4-16d98b50b75c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:29.939997+00:00", "updated_at": "2025-11-11T18:58:29.996497+00:00", "address": "aa:bb:cc:dd:ee:ff", "extra": {}, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_160_lessee_manager_can_change_provision_state [0.071389s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-648b9f24-e6c4-49ec-a319-c2797b3975d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_allowed [0.089018s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/pxe_enabled', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1807e77a-d397-41c5-b995-aaacc7ab9c3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.19 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:30.053900+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_160_portgroups_ports_get_admin [0.150952s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8989a1c3-52fc-4999-85b6-2867fcc2d115 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_161_lessee_member_cannot_change_provision_state [0.077138s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision WITH {'target': 'deploy'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-260f5e43-3b74-41d3-8bff-177744fd5434 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_169_ports_detail_get_member [0.123989s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-41a004fe-5fe9-4922-b62d-19f2ae4b4125 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:30.062567+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_old_api_version [0.054905s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/pxe_enabled', 'value': True, 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-00934c6d-a3c1-42b8-806c-5a84e3a169b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.14 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Request not acceptable.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_allow [0.030891s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_empty [0.030624s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_local_link_connection_none_type [0.030885s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_162_third_party_admin_cannot_change_provision_state [0.135214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-88df0801-a0c0-490b-aee5-d290a5406d7c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_161_portgroups_ports_get_member [0.162102s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a3f51c68-97b7-4b1f-bab6-332bee6de31a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_none [0.031387s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_170_ports_detail_get_reader [0.149061s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7aa761e3-8dcc-4872-9c4e-ace2e38f1c25 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:30.208338+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_not_allow [0.027518s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_allow [0.025451s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_163_service_can_change_provision_state_for_own_nodes [0.106292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'deploy'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-da9cf27a-af65-477d-acbc-51e4ebd3e8ee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_171_ports_port_id_get_admin [0.139017s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f89ded89-6556-4803-9f38-115873c56817 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:30.346316+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_162_portgroups_ports_get_observer [0.154896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9a937831-4fa3-45b9-8dc0-a73b8ab2d58d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_not_allow [0.127708s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_164_service_cannot_change_provision_state [0.130356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f7816a34-0572-4653-9c58-b226fc6bfaef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_allow [0.052256s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_not_allow [0.053474s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_163_portgroups_ports_detail_get_admin [0.144667s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-32a6ab14-c9a2-4a09-95a0-0290a37acc87 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_172_ports_port_id_get_member [0.173335s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4cacd4d7-5dbd-46b4-a5b3-d7205eed9dad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:30.504320+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_165_owner_member_can_set_provision_state_clean [0.103904s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'clean', 'clean_steps': [{'interface': 'deploy', 'step': 'update_firmware', 'args': {'foo': 'bar'}, 'priority': 99}]} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-56400f4b-5263-485a-9090-d1c85880b859 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 is locked by host lolcats, please retry after the current operation is completed.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__GetPortByAddress.test__get_ports_by_address [0.040165s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_164_portgroups_ports_detail_get_member [0.069736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ed501002-264b-4d0e-9f23-309972c9d239 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_166_owner_reader_cannot_set_provision_state_clean [0.066464s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'clean', 'clean_steps': [{'interface': 'deploy', 'step': 'update_firmware', 'args': {'foo': 'bar'}, 'priority': 99}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-51c246c3-7c26-4dad-ae98-c35b116e4ee7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_fast_deploy_lookup [0.105034s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=cd36f054-d4f8-4ac7-8376-c1694e73080b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-63d41e18-dc8b-4e79-840e-5be65daf3fe6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "cd36f054-d4f8-4ac7-8376-c1694e73080b", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/cd36f054-d4f8-4ac7-8376-c1694e73080b", "rel": "self"}, {"href": "http://localhost/nodes/cd36f054-d4f8-4ac7-8376-c1694e73080b", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "abcxyz", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=cd36f054-d4f8-4ac7-8376-c1694e73080b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7ea6e729-91e5-477d-877b-6824d662406e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "cd36f054-d4f8-4ac7-8376-c1694e73080b", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/cd36f054-d4f8-4ac7-8376-c1694e73080b", "rel": "self"}, {"href": "http://localhost/nodes/cd36f054-d4f8-4ac7-8376-c1694e73080b", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "abcxyz", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=cd36f054-d4f8-4ac7-8376-c1694e73080b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c21045bb-02a1-4a7f-865a-e29c655dbc4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "cd36f054-d4f8-4ac7-8376-c1694e73080b", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/cd36f054-d4f8-4ac7-8376-c1694e73080b", "rel": "self"}, {"href": "http://localhost/nodes/cd36f054-d4f8-4ac7-8376-c1694e73080b", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "abcxyz", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_165_portgroups_ports_detail_get_observer [0.075338s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-33e7d553-123d-4fd2-b49d-b3ed11116f47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_173_ports_port_id_get_reader [0.163769s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-78f462ab-539d-4857-9ffb-26e3bc4b8a66 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:30.666172+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_167_lessee_admin_can_set_provision_state_clean [0.098469s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision WITH {'target': 'clean', 'clean_steps': [{'interface': 'deploy', 'step': 'update_firmware', 'args': {'foo': 'bar'}, 'priority': 99}]} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-a0f00d48-65f3-426f-b11c-eaa6156fbc0e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f is locked by host lolcats, please retry after the current operation is completed.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_166_volume_get_admin [0.061985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2329a8f1-64fc-4414-86cd-c9f8e49e8f7c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_addresses [0.103712s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-74c99039-e3a6-4859-b06e-8868220eb053 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "712cf75c-80c0-4230-8f85-19ca1d7882a2", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/712cf75c-80c0-4230-8f85-19ca1d7882a2", "rel": "self"}, {"href": "http://localhost/nodes/712cf75c-80c0-4230-8f85-19ca1d7882a2", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "some-value", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_167_volume_get_member [0.061537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0aa095ef-ca6d-483a-9ca2-73dcaff6d62e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_only_uuid [0.073204s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?node_uuid=ca6609cc-63eb-4be9-b2f4-e162275bb2b2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-99dd66ce-9c0a-4780-99e3-3130c946329e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "ca6609cc-63eb-4be9-b2f4-e162275bb2b2", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/ca6609cc-63eb-4be9-b2f4-e162275bb2b2", "rel": "self"}, {"href": "http://localhost/nodes/ca6609cc-63eb-4be9-b2f4-e162275bb2b2", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "xyzabc", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_168_volume_get_observer [0.064041s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b06d6dc8-b240-4e63-926e-045593a4e77b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_168_lessee_member_cannot_set_provision_state_clean [0.146611s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision WITH {'target': 'clean', 'clean_steps': [{'interface': 'deploy', 'step': 'update_firmware', 'args': {'foo': 'bar'}, 'priority': 99}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2a0d1357-8283-4783-9cb0-07dabc14fee4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_174_ports_port_id_patch_admin [0.199976s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-636b6ffa-3264-4630-bb5c-7e5d11bc4524 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_uuid [0.081872s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=a5802959-06ae-4ceb-a1e7-ceda30fcaa6e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0ee18c0c-c0a3-4ba7-9121-4e5c485b0348 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "a5802959-06ae-4ceb-a1e7-ceda30fcaa6e", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/a5802959-06ae-4ceb-a1e7-ceda30fcaa6e", "rel": "self"}, {"href": "http://localhost/nodes/a5802959-06ae-4ceb-a1e7-ceda30fcaa6e", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "this_thing_on?", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_169_volume_connectors_get_admin [0.070588s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-064fe71d-b9ec-41b3-9cc4-b99a1989d7e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "46733fcb-8ae0-4e9f-a27a-e0071e3ea643", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/46733fcb-8ae0-4e9f-a27a-e0071e3ea643", "rel": "self"}, {"href": "http://localhost/volume/connectors/46733fcb-8ae0-4e9f-a27a-e0071e3ea643", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_170_volume_connectors_get_member [0.063496s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4843feed-7e22-4b21-bdb5-0a9fdcbf5d01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_ignore_malformed_address [0.089269s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=not-a-valid-address,80:00:02:48:fe:80:00:00:00:00:00:00:f4:52:14:03:00:54:06:c2,11:22:33:44:55:66,66:55:44:33:22:11 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cddcd85e-fc4d-4fae-a571-3ad9d7eae7b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "1fc4bb83-7e3f-4967-a906-6fc8006cb42c", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/1fc4bb83-7e3f-4967-a906-6fc8006cb42c", "rel": "self"}, {"href": "http://localhost/nodes/1fc4bb83-7e3f-4967-a906-6fc8006cb42c", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "123456", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_169_owner_member_can_set_provision_state_service [0.153567s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'service', 'clean_steps': [{'interface': 'deploy', 'step': 'update_firmware', 'args': {'foo': 'bar'}, 'priority': 99}]} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-1ac1317c-0764-4daa-8e72-d5d84b751a11 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 is locked by host lolcats, please retry after the current operation is completed.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_171_volume_connectors_get_observer [0.068068s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-19ef0eb0-4274-486f-84fc-90355f309b10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "bde7ecb6-7448-4308-96bc-355e54abf48c", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/bde7ecb6-7448-4308-96bc-355e54abf48c", "rel": "self"}, {"href": "http://localhost/volume/connectors/bde7ecb6-7448-4308-96bc-355e54abf48c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_invalid_input_addresses [0.068217s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=meow1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ba6bfc94-440e-4ca8-801d-ad92104d45fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"At least one of 'addresses' and 'node_uuid' parameters is required\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_175_ports_port_id_patch_member [0.189469s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-26ec3492-de08-40ed-9966-a291792da0bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_172_volume_connectors_post_admin [0.076737s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/9bd666c1-2f0a-44df-8c0e-6ac09c7b4424 Openstack-Request-Id: req-715f889d-e88b-4583-a016-91a110284d7b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9bd666c1-2f0a-44df-8c0e-6ac09c7b4424", "created_at": "2025-11-11T18:58:31.178325+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/9bd666c1-2f0a-44df-8c0e-6ac09c7b4424", "rel": "self"}, {"href": "http://localhost/volume/connectors/9bd666c1-2f0a-44df-8c0e-6ac09c7b4424", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_invalid_input_node_uuid [0.072408s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?node_uuid=meow1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b2d42b84-976c-46fb-886d-4c5fe946587b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Expected UUID for node_uuid: meow1\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_170_owner_reader_cannot_set_provision_state_service [0.158990s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/provision WITH {'target': 'service', 'clean_steps': [{'interface': 'deploy', 'step': 'update_firmware', 'args': {'foo': 'bar'}, 'priority': 99}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6e0181ea-dfb3-460a-8044-5ac2ffdfd657 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_173_volume_connectors_post_member [0.083433s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a2ea4583-7a67-4a67-9023-5a55d03f5023 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_no_restrict_lookup [0.087654s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=0c09c378-7c7c-4c7a-bcb2-ad906dd5d412 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1927af99-d76d-4ab9-be10-a8fe2688dd69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"node": {"uuid": "0c09c378-7c7c-4c7a-bcb2-ad906dd5d412", "properties": {"cpu_arch": "x86_64", "local_gb": "10", "memory_mb": "4096"}, "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "driver_internal_info": {"content": "** Redacted - Requires baremetal:node:get:driver_internal_info permission. **"}, "links": [{"href": "http://localhost/v1/nodes/0c09c378-7c7c-4c7a-bcb2-ad906dd5d412", "rel": "self"}, {"href": "http://localhost/nodes/0c09c378-7c7c-4c7a-bcb2-ad906dd5d412", "rel": "bookmark"}]}, "config": {"metrics": {"backend": "statsd", "prepend_host": false, "prepend_uuid": false, "prepend_host_reverse": true, "global_prefix": null}, "metrics_statsd": {"statsd_host": "localhost", "statsd_port": 8125}, "heartbeat_timeout": 300, "agent_token": "234567890", "agent_token_required": true, "agent_md5_checksum_enable": true, "disable_deep_image_inspection": false, "permitted_image_formats": ["raw", "qcow2", "iso"]}} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_176_ports_port_id_patch_reader [0.169878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-095edce4-f0e4-4715-aa8e-e3ed58b9bd3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_174_volume_connectors_post_observer [0.072336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6ab13503-699c-44a5-9726-08b0b7a84157 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_not_found [0.076274s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2f2f6226-7a9d-46ca-b387-aac69e05e9b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_177_ports_port_id_delete_admin [0.101247s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f140009c-f34f-4495-86c6-509cf6efaf44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_nothing_provided [0.077898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5af3ff64-cc80-4f08-8fa5-3c7750823508 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"At least one of 'addresses' and 'node_uuid' parameters is required\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_178_ports_port_id_delete_member [0.076389s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d028fd9f-0a5b-4d93-a2b5-2c65bd6151d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_old_api_version [0.068171s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-60392c40-d198-432a-a496-3c28183137f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_179_ports_port_id_delete_reader [0.072919s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-66b872eb-0252-42ac-acc8-b27a93581f1e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_171_lessee_admin_can_set_provision_state_service [0.339688s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision WITH {'target': 'service', 'clean_steps': [{'interface': 'deploy', 'step': 'update_firmware', 'args': {'foo': 'bar'}, 'priority': 99}]} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-00cb4ee2-34a7-4828-aea8-38117e1ecfcc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f is locked by host lolcats, please retry after the current operation is completed.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_restrict_lookup [0.082970s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=dadc7a46-bbce-4d3e-b243-c9248cec1ed7 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4e5c567a-515e-4144-999c-bb954cbe1627 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_invalid_major_version [0.033207s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_172_lessee_member_cannot_set_provision_state_service [0.069639s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/provision WITH {'target': 'service', 'clean_steps': [{'interface': 'deploy', 'step': 'update_firmware', 'args': {'foo': 'bar'}, 'priority': 99}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fb31c04f-a721-491b-b85e-8c6b00619ed1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_provision_state\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_180_nodes_ports_get_admin [0.087133s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f17739e4-48e5-4300-81d2-3049f866c2d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_ok [0.038389s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_175_volume_volume_connector_id_get_admin [0.350469s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/44ef4298-4a7b-4bdc-807a-483887d3d386 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b7c2f93d-5d8a-4859-99a0-555ba89f8638 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "44ef4298-4a7b-4bdc-807a-483887d3d386", "created_at": "2025-11-11T18:58:31.397094+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/44ef4298-4a7b-4bdc-807a-483887d3d386", "rel": "self"}, {"href": "http://localhost/volume/connectors/44ef4298-4a7b-4bdc-807a-483887d3d386", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_high [0.041542s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_181_nodes_ports_get_member [0.082846s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-283d081b-3b1a-424c-a76b-51706c3d37f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_low [0.038302s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_173_owner_admin_can_set_raid_config [0.143293s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-19e3da3f-3687-4eeb-af10-e97f7d291e64 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_176_volume_volume_connector_id_get_member [0.128603s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/57eeda63-31e0-44e4-86b5-14da57274016 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f3f82cb3-07e9-4a05-a8bc-d164b7db95a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 57eeda63-31e0-44e4-86b5-14da57274016 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_182_nodes_ports_get_reader [0.157854s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cb053941-cbf4-4675-8ce8-4f6d7344f412 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_add_multi [0.162021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/812e8d9e-5dc6-4070-ae49-e771d4aa124a WITH [{'path': '/steps/0', 'value': {'interface': 'raid', 'step': 'create_configuration0', 'args': {}, 'order': 2}, 'op': 'add'}, {'path': '/steps/1', 'value': {'interface': 'raid', 'step': 'create_configuration1', 'args': {}, 'order': 2}, 'op': 'add'}, {'path': '/steps/2', 'value': {'interface': 'raid', 'step': 'create_configuration2', 'args': {}, 'order': 2}, 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-94f3ac98-77eb-46f7-95a4-1464b9afa130 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "812e8d9e-5dc6-4070-ae49-e771d4aa124a", "created_at": "2025-11-11T18:58:31.818543+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/812e8d9e-5dc6-4070-ae49-e771d4aa124a", "rel": "self"}, {"href": "http://localhost/runbooks/812e8d9e-5dc6-4070-ae49-e771d4aa124a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "order": 2}, {"interface": "raid", "step": "create_configuration1", "args": {}, "order": 2}, {"interface": "raid", "step": "create_configuration2", "args": {}, "order": 2}, {"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_174_owner_manager_can_set_raid_config [0.165233s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ce91f3bb-bc0f-4048-b5e0-f65c2aa421b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_177_volume_volume_connector_id_get_observer [0.185736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/7ee4ee80-73eb-44cd-a579-7aafbb6d34c7 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d601ab72-230b-440a-9ff3-0105b2039124 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7ee4ee80-73eb-44cd-a579-7aafbb6d34c7", "created_at": "2025-11-11T18:58:31.904374+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/7ee4ee80-73eb-44cd-a579-7aafbb6d34c7", "rel": "self"}, {"href": "http://localhost/volume/connectors/7ee4ee80-73eb-44cd-a579-7aafbb6d34c7", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_add_root_non_existent [0.090909s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/6cb6f197-275d-4381-bfba-d996d043de2f WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4091a4a1-65e6-4f43-92d8-d001d0f081d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: extra, name, steps, description, public, owner\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_183_nodes_ports_detail_get_admin [0.170633s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-728b81cf-8eef-4dcb-b553-ccd74c5a63e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:32.007950+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_add_too_high_index_step_fail [0.069198s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/8da8079f-e70f-4097-8cf9-bb4f9c4fe065 WITH [{'path': '/steps/2', 'op': 'add', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'order': 1}}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f39c2095-a4cb-4470-887d-92b0c7842cee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/2', 'op': 'add', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'order': 1}}'. Reason: can't insert outside of list\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_175_lessee_admin_cannot_set_raid_config [0.210233s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a880e040-16b8-406c-ad10-6959681f701b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_178_volume_volume_connector_id_patch_admin [0.172949s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/55151af1-587e-404e-8213-b3f4fc23b72a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a7e9f2e8-7cee-450b-a7d5-cdacd0e33877 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_foo [0.083362s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/3c4c4129-4513-48a2-b0cc-b55ed915d5cc WITH [{'path': '/foo', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0a3422fc-d3d8-4443-9d65-7db682a66da1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /foo. Only the following can be updated: extra, name, steps, description, public, owner\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_184_nodes_ports_detail_get_member [0.206872s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d18bd6cd-bd78-41b7-8a09-587d4e7cd632 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:32.167856+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_multi [0.137868s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/7b7e5c9e-9594-42a4-bc2c-440faf1dd8c7 WITH [{'path': '/steps/1', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fccf27a3-5321-44d8-be42-a05ff771bb6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7b7e5c9e-9594-42a4-bc2c-440faf1dd8c7", "created_at": "2025-11-11T18:58:32.277626+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/7b7e5c9e-9594-42a4-bc2c-440faf1dd8c7", "rel": "self"}, {"href": "http://localhost/runbooks/7b7e5c9e-9594-42a4-bc2c-440faf1dd8c7", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "order": 2}, {"interface": "raid", "step": "create_configuration2", "args": {}, "order": 2}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_179_volume_volume_connector_id_patch_member [0.175712s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/6a76d5fb-5525-40ca-9d94-c9eaf92b5a38 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b94ddf2d-4774-462d-9abc-baea382646c2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 6a76d5fb-5525-40ca-9d94-c9eaf92b5a38 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_176_lessee_manager_cannot_set_raid_config [0.198972s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-23503888-2fde-459f-8bfe-fb8048c06d42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_name [0.102925s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/4c8c50c0-d39e-419a-b8f1-cb42aa26b3ec WITH [{'path': '/name', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3cc37ff6-9483-493d-aa5a-ce97191084ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'name' is a required property\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_non_existent_property_fail [0.076864s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/29662b31-5c46-485d-beb5-6cfff13e9207 WITH [{'path': '/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3d8a4b32-0b20-43cb-be66-81cb227539da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /non-existent. Only the following can be updated: extra, name, steps, description, public, owner\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_180_volume_volume_connector_id_patch_observer [0.177853s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/dbc8f6b5-5e82-41f5-988b-a86942ca6b88 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6e32f673-2c2b-4970-9b56-48fcfd14f404 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_177_owner_member_can_set_raid_config [0.177772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-39ee2633-5d3e-4f3b-a8cf-f3b86bc7ff4b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_185_nodes_ports_detail_get_reader [0.254823s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-10e16c0c-661f-4e31-b9c0-83fcda78f03c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "created_at": "2025-11-11T18:58:32.432350+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"tenant_vif_port_id": "ee21d58f-5de2-4956-85ff-33935ea1ca00"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "name": null, "links": [{"href": "http://localhost/v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "self"}, {"href": "http://localhost/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781", "rel": "bookmark"}], "portgroup_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_non_existent_step_fail [0.123843s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/0970b634-3b5d-469a-976e-2fa26a7c4839 WITH [{'path': '/steps/1', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a5e735b5-e3b2-403c-92c6-5ab5532da748 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/1', 'op': 'remove'}'. Reason: can't remove non-existent object '1'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_178_lessee_member_cannot_set_raid_config [0.129668s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fecb31b4-f9ae-4e7f-a1b8-ba3f93806822 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_raid_state\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_non_existent_step_property_fail [0.092332s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/88f6c0f1-c383-41a7-a627-9c42a9f56065 WITH [{'path': '/steps/0/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9fb7ea96-6359-4e35-95b5-929d205c5219 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/0/non-existent', 'op': 'remove'}'. Reason: can't remove non-existent object 'non-existent'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_181_volume_volume_connector_id_delete_admin [0.220787s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/6b8dbb38-00b0-4688-8f98-28f27c1162ea GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8fdef48c-5655-42b4-83c9-2a1c90dd634c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_179_third_party_admin_cannot_set_raid_config [0.154300s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a1e22ad3-1d2f-4e05-8d8e-065c97e6721c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_only_step_fail [0.100491s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/be49b36e-d6db-444f-9d55-17f91022e049 WITH [{'path': '/steps/0', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a514dd2e-f6f5-49b0-b66f-a6cf0611d713 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: [] is too short\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_182_volume_volume_connector_id_delete_member [0.162386s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/8c30d71a-69a4-4d81-90ab-f6d194596af1 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b7fa9e29-29ac-480a-938e-5fc3111519a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 8c30d71a-69a4-4d81-90ab-f6d194596af1 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_steps [0.091657s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/661ebf58-52c8-41e0-ad9a-3db05ba9dcc8 WITH [{'path': '/steps', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dd12dc50-4867-4266-9911-4d83d9589358 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'steps' is a required property\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_180_service_cannot_set_raid_config [0.144218s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2a6c312a-c4ce-4b09-bafc-8aabdcf02b8b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_uuid [0.072525s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/835fe1b7-5189-4ef1-b0db-20b1ee1bd24b WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ac99ef1e-b7ca-4ae3-ba9b-56123897ff4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot patch /uuid. Only the following can be updated: extra, name, steps, description, public, owner\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_183_volume_volume_connector_id_delete_observer [0.196884s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/6d0f0134-6150-42c3-b956-0a6377c9676e GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-acc1faf7-e297-4e9e-9600-4cf71b2caa28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_186_portgroups_ports_get_admin [0.561870s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b48d15c0-d4c1-40c0-8c32-d554530f7d70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_duplicate_step [0.113995s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/8d77c7da-d64d-4df8-acd9-59181753e8de WITH [{'path': '/steps', 'op': 'replace', 'value': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': '0'}, 'order': 0}, {'interface': 'raid', 'step': 'create_configuration', 'args': {'foo': '1'}, 'order': 1}]}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-be984617-26fe-4577-87fa-67a9676b10b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Deploy template invalid: Duplicate deploy steps. A template cannot have multiple deploy steps with the same interface and step. Duplicates: interface: raid, step: create_configuration.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_181_owner_admin_can_get_console [0.156163s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4d32cdc0-bf5f-4b3c-832a-ec5e9669407c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_empty_step_list_fail [0.095230s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/301c2f77-a05f-4dec-822c-1f97f9ca797f WITH [{'path': '/steps', 'op': 'replace', 'value': []}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a3a0f020-dadb-4b1c-8907-4a40b9077956 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: [] is too short\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_187_portgroups_ports_get_member [0.152265s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4a55eed5-3948-4687-902b-2e4ca75cedda X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_184_volume_targets_get_admin [0.173552s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-87020db7-f5d0-4c68-b315-35f06a128474 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "e594d8b5-77d8-4997-a799-c4eb4a97bd81", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/e594d8b5-77d8-4997-a799-c4eb4a97bd81", "rel": "self"}, {"href": "http://localhost/volume/targets/e594d8b5-77d8-4997-a799-c4eb4a97bd81", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_182_owner_manager_can_get_console [0.152134s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e876aab0-c8fd-4a81-9f85-4ef204a2c28b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_invalid_name_none [0.104139s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/ec4040ec-8ffa-42e0-8269-7f11904501c2 WITH [{'path': '/name', 'op': 'replace', 'value': None}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e4267d6b-e3c8-4659-89cd-e52206566b27 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: None is not of type 'string'\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_183_owner_service_can_get_console [0.134780s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-6e51f530-8c77-4c6f-b9ec-d2c2c1920e6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_invalid_name_too_long [0.098576s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/15fb7250-353d-48fa-9754-a216157ff5c6 WITH [{'path': '/name', 'op': 'replace', 'value': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7471bfdd-c43b-4b9b-930e-912d8e1cf02b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' is too long\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_185_volume_targets_get_member [0.147066s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fb52ddf1-0d29-45c5-b7b7-9555247dcbe2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_188_portgroups_ports_get_reader [0.162138s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f867fa80-a436-4708-8525-ec9b86fec6a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_invalid_step_interface_fail [0.085385s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/b9b2fc84-82e7-439d-89ff-745c911c0d3f WITH [{'path': '/steps/0', 'op': 'replace', 'value': {'interface': 'foo', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'order': 1}}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b349e5a9-2691-4470-8d3c-9b2c88d4f770 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'foo' is not one of ['vendor', 'power', 'management', 'firmware', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_184_lessee_admin_cannot_get_console [0.155244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-35faad24-63aa-4ed2-af08-3e024c159190 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_186_volume_targets_get_observer [0.146353s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-db9881fd-7107-41b3-93e3-04d705afcdfb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "968f063e-b30c-40bb-a02f-3fb5acf754ed", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/968f063e-b30c-40bb-a02f-3fb5acf754ed", "rel": "self"}, {"href": "http://localhost/volume/targets/968f063e-b30c-40bb-a02f-3fb5acf754ed", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_189_portgroups_ports_detail_get_admin [0.173281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d507b982-66e0-49ed-99d6-904817d0148a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_multi [0.122831s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/21caeded-ca0a-4ec4-a3c7-60c28f16d94b WITH [{'path': '/steps/0', 'value': {'interface': 'raid', 'step': 'create_configuration0', 'args': {}, 'order': 3}, 'op': 'replace'}, {'path': '/steps/1', 'value': {'interface': 'raid', 'step': 'create_configuration1', 'args': {}, 'order': 3}, 'op': 'replace'}, {'path': '/steps/2', 'value': {'interface': 'raid', 'step': 'create_configuration2', 'args': {}, 'order': 3}, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f065e125-5c29-4607-881d-7dbaa8bf146d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "21caeded-ca0a-4ec4-a3c7-60c28f16d94b", "created_at": "2025-11-11T18:58:33.587213+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/21caeded-ca0a-4ec4-a3c7-60c28f16d94b", "rel": "self"}, {"href": "http://localhost/runbooks/21caeded-ca0a-4ec4-a3c7-60c28f16d94b", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "order": 3}, {"interface": "raid", "step": "create_configuration1", "args": {}, "order": 3}, {"interface": "raid", "step": "create_configuration2", "args": {}, "order": 3}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_185_lessee_manager_cannot_get_console [0.136086s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4865475e-91ce-496f-b397-f9be6f85b9e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_name_already_exist [0.109969s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/0131f874-9d9c-4d53-83fa-0f57a6d4b809 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-eb5522bd-ac3d-4ff2-9045-d82b20cfd2f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"A runbook with UUID 0131f874-9d9c-4d53-83fa-0f57a6d4b809 already exists.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_187_volume_targets_post_admin [0.190710s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/36607b78-0830-4d34-9511-d09ca58a32dc Openstack-Request-Id: req-895f31bc-ccac-45ab-8505-f00fa4d5a429 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "36607b78-0830-4d34-9511-d09ca58a32dc", "created_at": "2025-11-11T18:58:33.777818+00:00", "updated_at": null, "boot_index": 4, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/36607b78-0830-4d34-9511-d09ca58a32dc", "rel": "self"}, {"href": "http://localhost/volume/targets/36607b78-0830-4d34-9511-d09ca58a32dc", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_190_portgroups_ports_detail_get_member [0.182892s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d7e435ac-e528-4d46-bdc2-d204ef502b00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_non_existent_step_fail [0.082440s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/219fb319-3d88-412a-8043-e5ec04689f03 WITH [{'path': '/steps/1', 'op': 'replace', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'order': 1}}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9ad08165-6827-491d-98d3-0a48b577e4fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '{'path': '/steps/1', 'op': 'replace', 'value': {'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'order': 1}}'. Reason: list assignment index out of range\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_step_invalid_interface [0.072537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/67bf6a28-140b-44e9-b403-1a647712c65e WITH [{'path': '/steps/0/interface', 'op': 'replace', 'value': 'foo'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-46fcd7a1-182a-412d-adb2-1221cc7f7a99 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for patch: 'foo' is not one of ['vendor', 'power', 'management', 'firmware', 'deploy', 'bios', 'raid']\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_188_volume_targets_post_member [0.160396s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7b73db08-3ee1-44fd-a0d7-674851d21bec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_186_owner_member_can_get_console [0.230622s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-bc89c16e-27e5-4ed3-8eb8-cec9f71992be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_runbook_set_owner_public_system_scope [0.148241s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '71c8b104-ea6e-474f-8c54-3e42bb51fac1', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': True, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/71c8b104-ea6e-474f-8c54-3e42bb51fac1 Openstack-Request-Id: req-f9afe733-e7fb-4af3-9dcb-80f8a073eb33 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "71c8b104-ea6e-474f-8c54-3e42bb51fac1", "created_at": "2025-11-11T18:58:34.024026+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/71c8b104-ea6e-474f-8c54-3e42bb51fac1", "rel": "self"}, {"href": "http://localhost/runbooks/71c8b104-ea6e-474f-8c54-3e42bb51fac1", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/71c8b104-ea6e-474f-8c54-3e42bb51fac1 WITH [{'path': '/owner', 'value': 'projectX', 'op': 'replace'}, {'path': '/public', 'value': False, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-81d6f00f-1373-4e0a-b838-c70582c4b12d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "71c8b104-ea6e-474f-8c54-3e42bb51fac1", "created_at": "2025-11-11T18:58:34.024026+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/71c8b104-ea6e-474f-8c54-3e42bb51fac1", "rel": "self"}, {"href": "http://localhost/runbooks/71c8b104-ea6e-474f-8c54-3e42bb51fac1", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_191_portgroups_ports_detail_get_reader [0.231434s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-113f969f-0b09-458b-9a47-10b4f9b5405c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_187_lessee_member_cannot_get_console [0.150993s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dc22a8ed-1604-420c-98ba-3e9839ef3740 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_189_volume_targets_post_observer [0.225162s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a5b2b66a-d95d-4615-93c1-b3fc09ac4af3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_188_owner_reader_cannot_get_console [0.155078s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b0278fe2-bece-4f22-9e10-1ae56e2dd8dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_192_volume_get_admin [0.187351s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1d59e3e8-d35f-4fd0-a5eb-48b685eb2030 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_190_volume_volume_target_id_get_admin [0.166059s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/197d0cbd-c346-4ccc-bc38-fd44cde6b872 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f8a6614e-5963-4c15-93ec-6750e8e3345d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "197d0cbd-c346-4ccc-bc38-fd44cde6b872", "created_at": "2025-11-11T18:58:34.293594+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/197d0cbd-c346-4ccc-bc38-fd44cde6b872", "rel": "self"}, {"href": "http://localhost/volume/targets/197d0cbd-c346-4ccc-bc38-fd44cde6b872", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_193_volume_get_member [0.201069s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-061751ff-5c66-419b-b67b-2f12ef03d951 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_191_volume_volume_target_id_get_member [0.134014s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/28bd3b7f-e37b-409a-9d6e-8bd821cbaff8 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ca42d86a-4efd-4216-a321-faf7b75e18da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 28bd3b7f-e37b-409a-9d6e-8bd821cbaff8 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_189_lessee_reader_cannot_get_console [0.234103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b35c9892-9820-4c7b-b708-3f724fdea6b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:get_console\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_runbook_set_owner_public_system_scope_fails [0.465263s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '1e709954-7c26-408d-8c97-4c855d3b857d', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': True, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/1e709954-7c26-408d-8c97-4c855d3b857d Openstack-Request-Id: req-bf1e7219-b985-48aa-b9bb-1e2bf17fbd61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1e709954-7c26-408d-8c97-4c855d3b857d", "created_at": "2025-11-11T18:58:34.517788+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/1e709954-7c26-408d-8c97-4c855d3b857d", "rel": "self"}, {"href": "http://localhost/runbooks/1e709954-7c26-408d-8c97-4c855d3b857d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/1e709954-7c26-408d-8c97-4c855d3b857d WITH [{'path': '/owner', 'value': 'projectX', 'op': 'replace'}, {'path': '/public', 'value': True, 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-895da869-953b-4643-bc15-718bdb75ed6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '[{'path': '/owner', 'value': 'projectX', 'op': 'replace'}, {'path': '/public', 'value': True, 'op': 'replace'}]'. Reason: There cannot be an owner for a public runbook\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_192_volume_volume_target_id_get_observer [0.138278s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/04c4679e-bd5b-4d93-95b5-4fc31a9db704 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-eeb5b9ce-2aae-4270-a0e0-412e39d9b541 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "04c4679e-bd5b-4d93-95b5-4fc31a9db704", "created_at": "2025-11-11T18:58:34.575328+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"redacted_contents": "** Value redacted: Requires permission baremetal:volume:view_target_properties access. Permission denied. **"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/04c4679e-bd5b-4d93-95b5-4fc31a9db704", "rel": "self"}, {"href": "http://localhost/volume/targets/04c4679e-bd5b-4d93-95b5-4fc31a9db704", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_new_owner_for_project_owned_runbook [0.128655s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '2fbfa0c8-6520-45fc-afb0-582e8962e455', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/2fbfa0c8-6520-45fc-afb0-582e8962e455 Openstack-Request-Id: req-b8aaf04b-f9b5-4a82-b2dc-342a1f610f80 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2fbfa0c8-6520-45fc-afb0-582e8962e455", "created_at": "2025-11-11T18:58:34.616659+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/2fbfa0c8-6520-45fc-afb0-582e8962e455", "rel": "self"}, {"href": "http://localhost/runbooks/2fbfa0c8-6520-45fc-afb0-582e8962e455", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/2fbfa0c8-6520-45fc-afb0-582e8962e455 WITH [{'path': '/owner', 'value': 'projectY', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b07dc346-1a04-4d49-ad75-82100cce8da6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2fbfa0c8-6520-45fc-afb0-582e8962e455", "created_at": "2025-11-11T18:58:34.616659+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectY", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/2fbfa0c8-6520-45fc-afb0-582e8962e455", "rel": "self"}, {"href": "http://localhost/runbooks/2fbfa0c8-6520-45fc-afb0-582e8962e455", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_194_volume_get_reader [0.212232s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ae5c2349-eee2-4528-a444-36d8f8be452a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_190_third_party_admin_cannot_get_console [0.201281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6b1dca7c-064f-4808-895d-446e07eee833 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_195_volume_get_service [0.112542s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f4371bae-f756-4adc-8f8d-320521d1c49d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_193_volume_volume_target_id_patch_admin [0.191135s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/ecf3bfcd-deec-4182-aae8-daaf71f6976a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-aabc7909-b070-4111-a067-57c934be1d7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_owner_system_scope [0.184573s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '6590c7ce-5b3e-4fe2-ab13-36131e98a72f', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/6590c7ce-5b3e-4fe2-ab13-36131e98a72f Openstack-Request-Id: req-cf01c0d1-9901-46dc-86bd-9d34a7e2512d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6590c7ce-5b3e-4fe2-ab13-36131e98a72f", "created_at": "2025-11-11T18:58:34.786105+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/6590c7ce-5b3e-4fe2-ab13-36131e98a72f", "rel": "self"}, {"href": "http://localhost/runbooks/6590c7ce-5b3e-4fe2-ab13-36131e98a72f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/6590c7ce-5b3e-4fe2-ab13-36131e98a72f WITH [{'path': '/owner', 'value': 'projectX', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b016112e-9e5c-4d57-b91d-7b8601e48183 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6590c7ce-5b3e-4fe2-ab13-36131e98a72f", "created_at": "2025-11-11T18:58:34.786105+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/6590c7ce-5b3e-4fe2-ab13-36131e98a72f", "rel": "self"}, {"href": "http://localhost/runbooks/6590c7ce-5b3e-4fe2-ab13-36131e98a72f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_191_owner_admin_can_set_console [0.183751s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {'enabled': True} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a0e4c709-34a5-4f13-bb59-24a624900160 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_196_volume_get_service_project [0.141185s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ecb66540-f668-408a-a7ae-7f3392491d1a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_owner_system_scope_fails_if_public [0.121367s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '99de7555-08b0-4b46-b8d9-dcd6a17ba22b', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': True, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/99de7555-08b0-4b46-b8d9-dcd6a17ba22b Openstack-Request-Id: req-dd311d50-110d-422e-b675-99be1fbf2ea8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "99de7555-08b0-4b46-b8d9-dcd6a17ba22b", "created_at": "2025-11-11T18:58:34.947347+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/99de7555-08b0-4b46-b8d9-dcd6a17ba22b", "rel": "self"}, {"href": "http://localhost/runbooks/99de7555-08b0-4b46-b8d9-dcd6a17ba22b", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/99de7555-08b0-4b46-b8d9-dcd6a17ba22b WITH [{'path': '/owner', 'value': 'projectX', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-22f897d4-fe40-4bca-8721-121ca3b60d5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Couldn't apply patch '[{'path': '/owner', 'value': 'projectX', 'op': 'replace'}]'. Reason: There cannot be an owner for a public runbook\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_194_volume_volume_target_id_patch_member [0.141325s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/6a2ac393-84bb-45d0-a306-dfb1c0c0becd WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-78167b63-5cc3-4be4-a113-d6c161630709 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 6a2ac393-84bb-45d0-a306-dfb1c0c0becd could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_192_owner_manager_can_set_console [0.152694s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {'enabled': True} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-bb76c4fb-e0bf-410d-a312-6702d0bae23b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_project_owned_runbook_public [0.126167s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '230ae28c-df35-458d-881e-6801cca709ff', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/230ae28c-df35-458d-881e-6801cca709ff Openstack-Request-Id: req-5925dd50-b73a-45de-ac0c-4da53485d550 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "230ae28c-df35-458d-881e-6801cca709ff", "created_at": "2025-11-11T18:58:35.051942+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/230ae28c-df35-458d-881e-6801cca709ff", "rel": "self"}, {"href": "http://localhost/runbooks/230ae28c-df35-458d-881e-6801cca709ff", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/230ae28c-df35-458d-881e-6801cca709ff WITH [{'path': '/public', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-88e7ee62-8a4c-49e2-aba8-3ce5a6a8eadb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "230ae28c-df35-458d-881e-6801cca709ff", "created_at": "2025-11-11T18:58:35.051942+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/230ae28c-df35-458d-881e-6801cca709ff", "rel": "self"}, {"href": "http://localhost/runbooks/230ae28c-df35-458d-881e-6801cca709ff", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_195_volume_volume_target_id_patch_observer [0.138885s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/40554aec-d0f9-4890-9865-1a8c5b3bdc67 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6a8b1b01-3f4c-4b62-87f0-0eb8faca584f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_197_volume_connectors_get_admin [0.197631s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-325e539f-0d5b-4147-bb93-3a20290e2dd6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "e28d0a1e-726c-4ef0-800a-f26e2f4bd674", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/e28d0a1e-726c-4ef0-800a-f26e2f4bd674", "rel": "self"}, {"href": "http://localhost/volume/connectors/e28d0a1e-726c-4ef0-800a-f26e2f4bd674", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_193_lessee_admin_cannot_set_console [0.140603s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console WITH {'enabled': True} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d6b42e6a-6b04-41ff-a712-69a14ff44a0d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_public_system_scope [0.106993s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/d8a58759-2131-483d-8f1c-4d391b9d6847 WITH [{'path': '/public', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e87ad7fc-427a-4cf2-8f55-34dbfb4fc2c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d8a58759-2131-483d-8f1c-4d391b9d6847", "created_at": "2025-11-11T18:58:35.155581+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/d8a58759-2131-483d-8f1c-4d391b9d6847", "rel": "self"}, {"href": "http://localhost/runbooks/d8a58759-2131-483d-8f1c-4d391b9d6847", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_198_volume_connectors_get_member [0.132795s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-055c3808-cd7a-43fe-acdd-fcadd14b4280 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "33cb3eff-ab47-41de-bd6c-1e1a2416fdb0", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/33cb3eff-ab47-41de-bd6c-1e1a2416fdb0", "rel": "self"}, {"href": "http://localhost/volume/connectors/33cb3eff-ab47-41de-bd6c-1e1a2416fdb0", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_196_volume_volume_target_id_delete_admin [0.197926s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/92e96d00-3c04-48f4-8048-59a51e67fdf5 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-71a6feb7-2918-46fe-9f59-0c19fb0da85e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_unset_public_system_scope [0.132371s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE2', 'uuid': '7e473888-44bb-45df-b34b-470e998aebc7', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}, 'order': 1}], 'disable_ramdisk': False, 'extra': {}, 'public': True, 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/7e473888-44bb-45df-b34b-470e998aebc7 Openstack-Request-Id: req-17d9e789-63ab-430d-ad3c-549d18e83e4d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7e473888-44bb-45df-b34b-470e998aebc7", "created_at": "2025-11-11T18:58:35.278646+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE2", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/7e473888-44bb-45df-b34b-470e998aebc7", "rel": "self"}, {"href": "http://localhost/runbooks/7e473888-44bb-45df-b34b-470e998aebc7", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/7e473888-44bb-45df-b34b-470e998aebc7 WITH [{'path': '/public', 'value': False, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5db3db47-8487-404c-ae01-077c2ab8d177 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7e473888-44bb-45df-b34b-470e998aebc7", "created_at": "2025-11-11T18:58:35.278646+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/7e473888-44bb-45df-b34b-470e998aebc7", "rel": "self"}, {"href": "http://localhost/runbooks/7e473888-44bb-45df-b34b-470e998aebc7", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_194_lessee_manager_cannot_set_console [0.187002s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console WITH {'enabled': True} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cacb6859-a2e1-47f9-8ec4-1ee59da3862d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_199_volume_connectors_get_reader [0.150818s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b991415f-a439-4bdc-870e-62555516988b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "29741cbb-2493-47a9-a295-fc3c4e21397d", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/29741cbb-2493-47a9-a295-fc3c4e21397d", "rel": "self"}, {"href": "http://localhost/volume/connectors/29741cbb-2493-47a9-a295-fc3c4e21397d", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_by_id [0.110494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/a0ec8868-e5a8-464e-b74a-6af255e57601 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-284418ed-96d2-4836-8260-9393215b1b55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a0ec8868-e5a8-464e-b74a-6af255e57601", "created_at": "2025-11-11T18:58:35.406713+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/a0ec8868-e5a8-464e-b74a-6af255e57601", "rel": "self"}, {"href": "http://localhost/runbooks/a0ec8868-e5a8-464e-b74a-6af255e57601", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_by_id_invalid_api_version [0.058963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/3d6bc887-6155-4e8a-ad6c-e882f6db3a82 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow runbooks\"}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_195_owner_member_can_set_console [0.142733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {'enabled': True} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a9e4e4e9-be3b-4665-8aac-161967cbfa5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_197_volume_volume_target_id_delete_member [0.187390s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/09eda42d-5f5c-49b8-961a-498371ee85be GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c2701f89-cd10-41e3-a1c8-2e4cf37c50ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 09eda42d-5f5c-49b8-961a-498371ee85be could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_200_volume_connectors_get_service [0.151461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-82c67ea8-dd4f-43b9-8fe6-9b929bc2f9d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "a529d275-ecb7-48a4-a922-1ae1f1369741", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/a529d275-ecb7-48a4-a922-1ae1f1369741", "rel": "self"}, {"href": "http://localhost/volume/connectors/a529d275-ecb7-48a4-a922-1ae1f1369741", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_by_name [0.102864s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/CUSTOM_DT1 WITH [{'path': '/steps', 'value': [{'interface': 'bios', 'step': 'apply_configuration', 'args': {'foo': 'bar'}, 'order': 1}], 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-623ec0a5-e41c-466b-8b00-9c06d5f32643 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "aa8b0130-e58c-44c7-9375-bf0d0434cc65", "created_at": "2025-11-11T18:58:35.563297+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/aa8b0130-e58c-44c7-9375-bf0d0434cc65", "rel": "self"}, {"href": "http://localhost/runbooks/aa8b0130-e58c-44c7-9375-bf0d0434cc65", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "apply_configuration", "args": {"foo": "bar"}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_196_lessee_member_cannot_set_console [0.148717s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/states/console WITH {'enabled': True} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fec3a806-aa06-4053-93df-7da3e76641fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_console_state\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_by_name_old_api_version [0.065193s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/CUSTOM_DT1 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 405 Method Not Allowed Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"The API version does not allow runbooks\"}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_198_volume_volume_target_id_delete_observer [0.174000s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/9244139d-427a-4544-9ed6-1d98b62fed1a GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7da5c33f-0720-4b5d-bf85-dcf78f1dc393 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_201_volume_connectors_get_service_project [0.137148s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d7d6bd85-43ee-41ad-bd4b-9b1af62614cf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "fcc0f6ae-f0ff-434e-a9f9-1c02ad46226f", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/fcc0f6ae-f0ff-434e-a9f9-1c02ad46226f", "rel": "self"}, {"href": "http://localhost/volume/connectors/fcc0f6ae-f0ff-434e-a9f9-1c02ad46226f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_name_standard_trait [0.157859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/bda4c6a1-4ef5-4ec0-931b-6d0b786c09da WITH [{'path': '/name', 'value': 'HW_CPU_X86_VMX', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-488b674c-967e-4145-82c6-f660a35c0d38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "bda4c6a1-4ef5-4ec0-931b-6d0b786c09da", "created_at": "2025-11-11T18:58:35.755416+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/bda4c6a1-4ef5-4ec0-931b-6d0b786c09da", "rel": "self"}, {"href": "http://localhost/runbooks/bda4c6a1-4ef5-4ec0-931b-6d0b786c09da", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_199_nodes_volume_get_admin [0.149042s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f3b5591f-1b8e-438c-93e4-7cabda352176 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_197_owner_service_can_set_console [0.214570s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {'enabled': True} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d9fab6f6-3e6c-46cc-867c-d53b4b3e3e49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_202_volume_connectors_get_service_project_disable [0.151837s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a49cd19-6fa5-4b4c-99f1-4f75a91aac8a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": []} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_not_found [0.100069s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/0ba2a1a2-7773-4320-a0f0-11661276a236 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-76e0eea4-26e0-4ede-af08-a7823f0399b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Runbook 0ba2a1a2-7773-4320-a0f0-11661276a236 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_200_nodes_volume_get_member [0.143323s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-997ae73f-b955-405e-8e39-a4ad38ae1b2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_198_service_cannot_set_console [0.166691s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/states/console WITH {'enabled': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-31505c59-6bc2-483f-a0f7-620259b144d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_project_scope [0.117438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/da403125-7dca-4a07-930e-b999d11982ba WITH [{'path': '/name', 'value': 'CUSTOM_NAME', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-53a4381a-2842-4835-9534-1df6b86731ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "da403125-7dca-4a07-930e-b999d11982ba", "created_at": "2025-11-11T18:58:36.007452+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/da403125-7dca-4a07-930e-b999d11982ba", "rel": "self"}, {"href": "http://localhost/runbooks/da403125-7dca-4a07-930e-b999d11982ba", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_203_volume_connectors_post_admin [0.176879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/4e98f4ba-4030-4809-a7b2-3a88b8f68559 Openstack-Request-Id: req-976c78d8-f67b-43d2-99ef-6303febd4806 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4e98f4ba-4030-4809-a7b2-3a88b8f68559", "created_at": "2025-11-11T18:58:36.050015+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/4e98f4ba-4030-4809-a7b2-3a88b8f68559", "rel": "self"}, {"href": "http://localhost/volume/connectors/4e98f4ba-4030-4809-a7b2-3a88b8f68559", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_system_scope [0.092783s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/56d88a5f-1102-481d-abec-a089be6ba6a9 WITH [{'path': '/name', 'value': 'CUSTOM_NAME', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-906afbb9-28c1-41a0-b01b-5398a31eb560 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "56d88a5f-1102-481d-abec-a089be6ba6a9", "created_at": "2025-11-11T18:58:36.110935+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/56d88a5f-1102-481d-abec-a089be6ba6a9", "rel": "self"}, {"href": "http://localhost/runbooks/56d88a5f-1102-481d-abec-a089be6ba6a9", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_199_owner_admin_cannot_get_vendor_passthru_methods [0.138133s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-429e1b1f-0698-4b0c-8d92-3164e92156e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_201_nodes_volume_get_observer [0.195772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2cc1781-5f5a-4c1e-aa9e-a5ea231d7b1e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_agent_token [0.057240s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_204_volume_connectors_post_member [0.177513s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/cbbd0ce4-b9b6-42f2-ad60-b36568d2bf67 Openstack-Request-Id: req-697382ab-bd74-461a-924a-54a436fd1e7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "cbbd0ce4-b9b6-42f2-ad60-b36568d2bf67", "created_at": "2025-11-11T18:58:36.229163+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/cbbd0ce4-b9b6-42f2-ad60-b36568d2bf67", "rel": "self"}, {"href": "http://localhost/volume/connectors/cbbd0ce4-b9b6-42f2-ad60-b36568d2bf67", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_configdrive_vendor_data [0.054685s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_200_owner_manager_cannot_get_vendor_passthru_methods [0.130891s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-aebf2ce8-5929-4380-a98c-d632c19cb86b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_steps [0.044627s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_202_nodes_volume_connectors_get_admin [0.149660s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-58c71bd7-040b-4b37-824a-b9a625199453 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "0b585dc7-1078-4c5e-8303-19bce9c96083", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/0b585dc7-1078-4c5e-8303-19bce9c96083", "rel": "self"}, {"href": "http://localhost/volume/connectors/0b585dc7-1078-4c5e-8303-19bce9c96083", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_templates [0.053413s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_205_volume_connectors_post_reader [0.161761s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-67af957e-ea43-4df1-9be5-69d2de712cd1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_dynamic_drivers [0.054281s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inject_nmi [0.033515s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_201_owner_service_cannot_get_vendor_passthru_methods [0.199934s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-66f85f07-dcec-4354-b853-7a6ed5de1a61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_203_nodes_volume_connectors_get_member [0.183165s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9d76c1bb-f562-4f50-b222-b6179d049f2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inspect_abort [0.051889s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_206_volume_connectors_post_service [0.179555s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/d1acec06-2e83-43f1-bde4-442f7a6b9c26 Openstack-Request-Id: req-3b0f8a11-1ad6-4226-baec-f1d8bf5d940b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d1acec06-2e83-43f1-bde4-442f7a6b9c26", "created_at": "2025-11-11T18:58:36.570897+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/d1acec06-2e83-43f1-bde4-442f7a6b9c26", "rel": "self"}, {"href": "http://localhost/volume/connectors/d1acec06-2e83-43f1-bde4-442f7a6b9c26", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_links_node_states_and_driver_properties [0.065455s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_node_rebuild_with_configdrive [0.064350s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_202_owner_member_cannot_get_vendor_passthru_methods [0.150927s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e736ffe9-8af1-473e-b8e5-41fc9c20ad88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_204_nodes_volume_connectors_get_observer [0.161712s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-340db54e-ca3a-4696-96e8-fd9da6299d2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "57693a20-75c9-4406-8194-49db23bcf70a", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/57693a20-75c9-4406-8194-49db23bcf70a", "rel": "self"}, {"href": "http://localhost/volume/connectors/57693a20-75c9-4406-8194-49db23bcf70a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_advanced_net_fields [0.042327s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_internal_info [0.046008s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_207_volume_connectors_post_service_project [0.190617s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/74f0095c-975b-4d2e-b45b-2c3478529363 Openstack-Request-Id: req-70f599b0-d81f-4826-b812-7a955bbff52b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "74f0095c-975b-4d2e-b45b-2c3478529363", "created_at": "2025-11-11T18:58:36.764121+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/74f0095c-975b-4d2e-b45b-2c3478529363", "rel": "self"}, {"href": "http://localhost/volume/connectors/74f0095c-975b-4d2e-b45b-2c3478529363", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_is_smartnic [0.038902s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_205_nodes_volume_targets_get_admin [0.149001s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e0dfaecc-439b-4ac8-b7a0-bf814277c6e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "f0c051ff-da6c-4c88-84b4-b1ab80471044", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/f0c051ff-da6c-4c88-84b4-b1ab80471044", "rel": "self"}, {"href": "http://localhost/volume/targets/f0c051ff-da6c-4c88-84b4-b1ab80471044", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_no_pin [0.051500s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_203_owner_reader_cannot_get_vendor_passthru_methods [0.203587s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-18d34574-4ebf-491a-a619-853b0725b09a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_pin [0.062857s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroup_mode_properties [0.065961s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_206_nodes_volume_targets_get_member [0.126407s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5b583e4e-38a6-4cf7-a61a-c009bf4fe37b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_208_volume_volume_connector_id_get_admin [0.215392s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/bf1d20d5-c096-48f7-a30f-55d1203f7768 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4ff7508a-b367-4bdb-ad8f-657cef98fde4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "bf1d20d5-c096-48f7-a30f-55d1203f7768", "created_at": "2025-11-11T18:58:36.895244+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/bf1d20d5-c096-48f7-a30f-55d1203f7768", "rel": "self"}, {"href": "http://localhost/volume/connectors/bf1d20d5-c096-48f7-a30f-55d1203f7768", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_204_lessee_admin_cannot_get_vendor_passthru_methods [0.138938s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-483d3d01-421a-474c-bd57-1766dce4fd09 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups [0.073623s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups_subcontrollers [0.035490s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_ramdisk_endpoints [0.046692s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_207_nodes_volume_targets_get_observer [0.156243s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7d3839cc-5270-444b-a6e0-b5c26e745eb2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "962f99ab-38c8-4985-b462-c83e89142df0", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/962f99ab-38c8-4985-b462-c83e89142df0", "rel": "self"}, {"href": "http://localhost/volume/targets/962f99ab-38c8-4985-b462-c83e89142df0", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_209_volume_volume_connector_id_get_member [0.170355s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/64c74b4a-563d-45de-8eca-7a9bda3e4dc3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d3aacdd2-8968-413f-b3f0-a9e93e1778ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "64c74b4a-563d-45de-8eca-7a9bda3e4dc3", "created_at": "2025-11-11T18:58:37.096810+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/64c74b4a-563d-45de-8eca-7a9bda3e4dc3", "rel": "self"}, {"href": "http://localhost/volume/connectors/64c74b4a-563d-45de-8eca-7a9bda3e4dc3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_remove_chassis_uuid [0.043632s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_rescue_interface [0.063920s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_208_drivers_get_admin [0.126494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e88eaa8c-71b2-4157-a27e-2144cfcc5d3f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"drivers": []} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_storage_interface [0.059450s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_traits [0.063670s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_210_volume_volume_connector_id_get_reader [0.215331s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/698be963-bd45-42d8-8d3d-f22aff67a880 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5b8312b1-2254-4408-8ff3-202dd13abb79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "698be963-bd45-42d8-8d3d-f22aff67a880", "created_at": "2025-11-11T18:58:37.289302+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/698be963-bd45-42d8-8d3d-f22aff67a880", "rel": "self"}, {"href": "http://localhost/volume/connectors/698be963-bd45-42d8-8d3d-f22aff67a880", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_volume [0.042860s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_209_drivers_get_member [0.154667s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-538cfb9f-5ca8-4c2a-bd85-507dd2142404 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs [0.047181s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs_fail [0.056855s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_205_lessee_manager_cannot_get_vendor_passthru_methods [0.525105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-57032cf8-3495-4c7e-b60d-499f60cee5d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs [0.038550s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_211_volume_volume_connector_id_patch_admin [0.175659s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/49eedebd-6903-4cda-89a8-c995d168e3c3 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f22b5664-49f8-4e0c-84c8-67da99c3f2d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_210_drivers_get_observer [0.136725s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bf3812fc-4833-4d61-8400-5d2815f8c9e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"drivers": []} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs_fail [0.044561s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs [0.044602s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs_fail [0.044857s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_206_lessee_member_cannot_get_vendor_passthru_methods [0.182832s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5148859f-9183-4e13-9998-437dc5a3b612 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_212_volume_volume_connector_id_patch_member [0.165371s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/54e39135-2309-471b-9994-a784cb0198ef WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-9fcda572-2a72-4369-bc31-b3a4ee996936 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive [0.062427s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict [0.063087s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_213_volume_volume_connector_id_patch_reader [0.151279s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/c42abfc5-f571-4b6c-a244-193267cc093d WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6264fe70-d85c-42f8-9569-ff7c6654473d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_207_lessee_reader_cannot_get_vendor_passthru_methods [0.177355s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ac8c4d97-587b-4efe-a0cd-ad8239284b57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict_invalid [0.096188s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_fails [0.049926s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_vendor_data_failed [0.052393s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_214_volume_volume_connector_id_patch_service [0.165913s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1c31159d-02ae-4954-a509-25efdbfc8a60 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-202a3bda-3bce-4187-ba60-a3219c4264cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_208_owner_admin_cannot_get_vendor_passthru [0.157987s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dadbe377-34c5-4609-84bc-7dba2c0b7355 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps [0.046852s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_211_drivers_driver_name_get_admin [0.488494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ecadf862-b7fe-4cb9-8d59-facbede415bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_empty [0.043529s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_target_unsupported [0.036266s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_version_older [0.046324s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_215_volume_volume_connector_id_delete_admin [0.147766s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/bc285e00-1b52-4fb2-a06b-c15fd83f239f GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c58ed7f0-3c41-4611-ba29-8c1a8d4bde72 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_212_drivers_driver_name_get_member [0.150478s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f896de96-063b-4c30-aad9-da846c182ef8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs [0.048216s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_209_owner_manager_cannot_get_vendor_passthru [0.183560s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8c70ee2d-c92d-4399-90ba-22ee6a52d073 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs_fail [0.048608s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_213_drivers_driver_name_get_observer [0.085279s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-58fcaa1e-be7c-40fd-9085-348b1af59313 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail [0.039440s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_216_volume_volume_connector_id_delete_member [0.145330s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/6f0c0b5e-c770-4dd0-b576-68812a292228 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c0945575-c6bc-4bf1-9268-13bf1070c08b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_fail [0.042342s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_214_drivers_properties_get_admin [0.080624s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-28775e93-9bb5-4b53-abde-a35b5c219541 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_210_owner_service_cannot_get_vendor_passthru [0.153680s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f18e5898-6357-4aa0-bf14-91c1cb41c4e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_false [0.038578s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_none [0.038362s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_217_volume_volume_connector_id_delete_reader [0.151278s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/37635bc4-7dce-4e58-9097-550af661ff6b GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ade6ec9e-1ecf-40bb-8f61-d52844cabbe9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_211_owner_member_cannot_get_vendor_passthru [0.130339s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3b4c648f-2581-4c4c-a71f-d883bed0f69e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group [0.062108s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_215_drivers_properties_get_member [0.190111s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-262661be-43a1-448d-88cf-fdd027e46503 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_properties\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_fail [0.053734s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_none [0.043513s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_216_drivers_properties_get_observer [0.092259s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a97db329-cae9-457b-b501-922145a19217 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type [0.043642s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_fail [0.035633s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin [0.077806s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4bccea74-e9b7-4baa-a79a-0dee6323cc04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_none [0.041532s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_212_owner_reader_cannot_get_vendor_passthru [0.221681s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-99fc6ebb-3d5d-4bfa-b6f0-b839f8992dc5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs [0.033134s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs_fail [0.046002s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs [0.039542s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member [0.130489s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-142fe03d-3c95-418f-acdf-c869bedf9708 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:get_raid_logical_disk_properties\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_213_lessee_admin_cannot_get_vendor_passthru [0.195555s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2ceeb5cd-1436-41fc-a8a3-f4289f66aa1e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer [0.088202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c4f84533-9254-4412-b1db-938757905f43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin [0.098085s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1f8152b7-7fa1-4c96-98f8-71b666f46b58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_214_lessee_manager_cannot_get_vendor_passthru [0.151877s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d5d1fac5-dbb3-4f4c-9e99-3ccd84d57aca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_218_volume_volume_connector_id_delete_service [0.660680s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/4bf61fc1-6d89-4245-8c8e-e325403d6853 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ba3811ba-5027-4741-a333-d2f7f49ac94a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member [0.123076s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0d464138-835d-44d1-bb78-fef047f95100 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_215_lessee_member_cannot_get_vendor_passthru [0.162270s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f768966e-e36e-45ad-bb9d-99ab3bad0d8a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_219_volume_targets_get_admin [0.152010s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-731bcaf7-4f5c-4ced-83d1-f8b7fb103138 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "e41875a7-9450-4164-8077-7e92a1124a6c", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/e41875a7-9450-4164-8077-7e92a1124a6c", "rel": "self"}, {"href": "http://localhost/volume/targets/e41875a7-9450-4164-8077-7e92a1124a6c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer [0.137440s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2f46193a-8da1-498f-99d2-8d94ffda27e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs_fail [0.504150s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs [0.042922s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_216_lessee_reader_cannot_get_vendor_passthru [0.174720s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9465fb66-a0f7-4c28-97d5-77d20bb3e11e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs_fail [0.051106s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_223_drivers_vendor_passthru_get_admin [0.136232s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e1e3b93d-6202-4b54-b47b-712dd5a208ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver [0.024362s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_220_volume_targets_get_member [0.187970s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1aa4605c-7e18-49dd-a3f5-65f0e5f6921f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "841d1abe-27c2-4b99-a876-105f1122d8f1", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/841d1abe-27c2-4b99-a876-105f1122d8f1", "rel": "self"}, {"href": "http://localhost/volume/targets/841d1abe-27c2-4b99-a876-105f1122d8f1", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver_fail [0.057762s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields [0.046159s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_217_owner_admin_cannot_post_vendor_passthru [0.175836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6d9d901b-cef3-49ec-87f9-5a9fb70c42c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_224_drivers_vendor_passthru_get_member [0.150007s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-af2b50bd-164b-48b9-bd98-213f6d75d1bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_221_volume_targets_get_reader [0.146316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8443770-2bc0-43c8-9b48-12fb5b20ac8e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "a75667b3-5e4b-48bb-ad37-fb32ef1d945a", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/a75667b3-5e4b-48bb-ad37-fb32ef1d945a", "rel": "self"}, {"href": "http://localhost/volume/targets/a75667b3-5e4b-48bb-ad37-fb32ef1d945a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields_fail [0.057973s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class [0.023997s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class_fail [0.029094s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_218_owner_manager_cannot_post_vendor_passthru [0.138969s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bc01e86e-709c-454a-85c3-a46e15b214bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs [0.053318s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs_fail [0.037875s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_222_volume_targets_get_service [0.163985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5ed50ca2-3567-430c-8b4d-750aebd9d653 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "7dc93494-1ad9-4d76-bc9d-c764f42812d1", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/7dc93494-1ad9-4d76-bc9d-c764f42812d1", "rel": "self"}, {"href": "http://localhost/volume/targets/7dc93494-1ad9-4d76-bc9d-c764f42812d1", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_225_drivers_vendor_passthru_get_observer [0.179136s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0269b82c-ed6a-4797-b233-dfb79f370d70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_unknown_verbs [0.043761s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface [0.040780s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface_fail [0.042362s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_219_owner_service_cannot_post_vendor_passthru [0.181128s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fa2d4824-1ec1-423f-9b94-7d8c6f7444a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_226_drivers_vendor_passthru_post_admin [0.138541s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d852e6db-cd33-4ce3-8aad-63b8d5afdee6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_223_volume_targets_post_admin [0.163110s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 1, 'volume_id': 'test-id'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/56a64d7d-4ac3-4584-9a19-e8151e08341c Openstack-Request-Id: req-13f3721d-164d-4a1d-b7a3-4270cc5fedb9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "56a64d7d-4ac3-4584-9a19-e8151e08341c", "created_at": "2025-11-11T18:58:39.968772+00:00", "updated_at": null, "boot_index": 1, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/56a64d7d-4ac3-4584-9a19-e8151e08341c", "rel": "self"}, {"href": "http://localhost/volume/targets/56a64d7d-4ac3-4584-9a19-e8151e08341c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_rescue_interface_fail [0.052484s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class [0.035734s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class_fail [0.043173s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_220_owner_member_cannot_post_vendor_passthru [0.138132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-45443ede-45ee-44e3-b0dc-a16f478a9918 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties [0.041989s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties_fail [0.020823s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_224_volume_targets_post_member [0.161854s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id2'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/b0f19fbf-24a9-458c-b889-f90a6ddc6431 Openstack-Request-Id: req-8e74abd3-6b21-421f-a7a0-e3d215f852c0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b0f19fbf-24a9-458c-b889-f90a6ddc6431", "created_at": "2025-11-11T18:58:40.130449+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/b0f19fbf-24a9-458c-b889-f90a6ddc6431", "rel": "self"}, {"href": "http://localhost/volume/targets/b0f19fbf-24a9-458c-b889-f90a6ddc6431", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_227_drivers_vendor_passthru_post_member [0.171793s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f96c0651-5f37-4445-aef0-fe334d172a78 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve [0.023661s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node [0.021059s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node_policy_notfound [0.019665s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_policy_forbidden [0.019866s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_with_suffix [0.019649s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve [0.020854s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port [0.020744s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_221_owner_reader_cannot_post_vendor_passthru [0.192368s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cc9758af-abdb-41d9-acb4-73e61389ac48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port_policy_forbidden [0.033513s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_225_volume_targets_post_service [0.179375s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id2'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/a4263074-fd58-4d45-83fc-13115d281e17 Openstack-Request-Id: req-3d8894cf-1b6a-49c2-8299-0ed25444b146 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a4263074-fd58-4d45-83fc-13115d281e17", "created_at": "2025-11-11T18:58:40.299851+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/a4263074-fd58-4d45-83fc-13115d281e17", "rel": "self"}, {"href": "http://localhost/volume/targets/a4263074-fd58-4d45-83fc-13115d281e17", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_policy_notfound [0.044843s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_228_drivers_vendor_passthru_post_observer [0.215112s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8d789b0a-f02c-406a-a6bf-49fe0a70ce7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_cant_set_only_logical [0.071300s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_222_lessee_admin_cannot_post_vendor_passthru [0.150218s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-df255a73-bab9-4782-a0cd-2b53a63c4613 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_cant_set_only_physical [0.075688s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_226_volume_targets_post_service_project [0.227256s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id2'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/9c93b872-17f7-4762-b18f-17e18c57e473 Openstack-Request-Id: req-0749c216-e291-4184-9e00-e059e74ec6d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9c93b872-17f7-4762-b18f-17e18c57e473", "created_at": "2025-11-11T18:58:40.535551+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9c93b872-17f7-4762-b18f-17e18c57e473", "rel": "self"}, {"href": "http://localhost/volume/targets/9c93b872-17f7-4762-b18f-17e18c57e473", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_229_drivers_vendor_passthru_put_admin [0.186299s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fe6c1125-2595-4078-9382-2923afe725fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_invalid [0.092127s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_223_lessee_manager_cannot_post_vendor_passthru [0.184974s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dc52af2e-710c-4919-9f04-5c0d2dc07199 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged [0.060405s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged_combine_ok [0.068792s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_227_volume_targets_post_service_project_disabled [0.208992s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id2'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-50db4c04-6c7a-4ba5-b648-8558c3ed0876 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_230_drivers_vendor_passthru_put_member [0.199932s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0c432b64-d4dc-40ac-90c6-ec298df19ea0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_set_both_switches [0.062372s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_224_lessee_member_cannot_post_vendor_passthru [0.173801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8af5e59f-6274-41e1-8b06-201516cf4f86 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type [0.069010s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_datapath_id [0.052077s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_231_drivers_vendor_passthru_put_observer [0.144095s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-50ce2ed5-2a20-489a-8d24-7a9ce35f8af6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_228_volume_targets_post_service_project_admin [0.183176s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id2'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3b6b0285-392e-4752-9cda-36336ab2bd97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_225_lessee_reader_cannot_post_vendor_passthru [0.182994s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-386d208c-d157-4d61-82d4-868ac06e48c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_empty_value [0.097613s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_229_volume_targets_post_reader [0.107701s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 1, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-13b68e75-9d52-4db8-ab2f-dcde39779559 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin ... SKIPPED: not updated for scope testing {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_invalid_key [0.096647s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_230_volume_volume_target_id_get_admin [0.074372s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/07007ad9-c69a-481b-a02c-80d63c63765c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-37cced46-df30-4e11-9f9e-c48a5862e7a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "07007ad9-c69a-481b-a02c-80d63c63765c", "created_at": "2025-11-11T18:58:41.114772+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/07007ad9-c69a-481b-a02c-80d63c63765c", "rel": "self"}, {"href": "http://localhost/volume/targets/07007ad9-c69a-481b-a02c-80d63c63765c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_local_link_keys_mandatory [0.085564s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_226_owner_admin_cannot_put_vendor_passthru [0.208833s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4dfca181-8ec0-4f7d-a926-026702753390 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer ... SKIPPED: not updated for scope testing {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_231_volume_volume_target_id_get_member [0.142083s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/31b7ae94-71aa-444a-8635-8d6e7aebf712 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1425a222-157f-4b8a-8e59-3916d47e96a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "31b7ae94-71aa-444a-8635-8d6e7aebf712", "created_at": "2025-11-11T18:58:41.220542+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/31b7ae94-71aa-444a-8635-8d6e7aebf712", "rel": "self"}, {"href": "http://localhost/volume/targets/31b7ae94-71aa-444a-8635-8d6e7aebf712", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_missing_local_link_mandatory_key [0.103231s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_227_owner_manager_cannot_put_vendor_passthru [0.142881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b6254b2f-d232-4327-91c9-0092a6fb75eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_not_mac_or_datapath_id [0.095576s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_234_nodes_bios_get_admin [0.162898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a1fb02e5-1318-491f-ad9b-ae2dbf1affa2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": [{"created_at": "2025-11-11T18:58:41.326643+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_232_volume_volume_target_id_get_reader [0.177359s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/4de4a6db-b1f0-45ed-bea2-09521fabad3b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-524d6ba6-c41a-4cc3-996e-e9f1f949bd38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4de4a6db-b1f0-45ed-bea2-09521fabad3b", "created_at": "2025-11-11T18:58:41.385775+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/4de4a6db-b1f0-45ed-bea2-09521fabad3b", "rel": "self"}, {"href": "http://localhost/volume/targets/4de4a6db-b1f0-45ed-bea2-09521fabad3b", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_hostname_missing [0.079036s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_228_owner_service_cannot_put_vendor_passthru [0.158801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2694d86d-7594-4949-a321-1a9dd37419bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_235_nodes_bios_get_member [0.149350s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0165095f-6c4d-4e59-a444-9a1452d80f20 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_mandatory [0.085101s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_229_owner_member_cannot_put_vendor_passthru [0.134701s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-87143487-a65b-4119-a456-dded5e879417 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_233_volume_volume_target_id_get_service [0.168049s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/9205bf5d-4a6f-4367-85a9-626fea8b4b9b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0ada2ee2-3a40-4d00-944c-7621fc322219 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9205bf5d-4a6f-4367-85a9-626fea8b4b9b", "created_at": "2025-11-11T18:58:41.566745+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"target_iqn": "iqn.foo"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9205bf5d-4a6f-4367-85a9-626fea8b4b9b", "rel": "self"}, {"href": "http://localhost/volume/targets/9205bf5d-4a6f-4367-85a9-626fea8b4b9b", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_port_id_missing [0.073673s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_with_optional [0.080430s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_invalid_name [0.029475s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_236_nodes_bios_get_observer [0.238763s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-020dcb28-45a0-413d-8d97-209829bc27a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": [{"created_at": "2025-11-11T18:58:41.700179+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_234_volume_volume_target_id_patch_admin [0.180910s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/7aef2c73-efb9-4919-b3e6-c1e0e069964e WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-016128a4-ab3b-46bd-bfb4-3610d0a3f722 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_230_owner_reader_cannot_put_vendor_passthru [0.196962s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-74d5a594-e76a-4c6d-ab64-46450d7ffef9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_name [0.052493s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_uuid [0.046732s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy [0.044590s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin [0.190202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ae57edb8-6ee8-4f56-90f6-351c9c180fda X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"FAKE_SETTING": {"created_at": "2025-11-11T18:58:41.931849+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "attribute_type": "Enumeration", "allowable_values": ["on", "off"], "lower_bound": null, "max_length": null, "min_length": null, "read_only": false, "reset_required": true, "unique": false, "upper_bound": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_231_lessee_admin_cannot_put_vendor_passthru [0.166958s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-065e7037-1e59-442e-bbf1-02ce50bd13bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy_forbidden [0.076996s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_235_volume_volume_target_id_patch_reader [0.186438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/f656b651-2a57-4e3c-b7dd-a613e25e14c0 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-eaefa784-db02-41cb-94e1-ad357607fb41 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_async [0.052304s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_sync [0.052077s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_238_nodes_bios_bios_setting_get_member [0.162477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9ce2281a-dcc0-48d4-9d16-00bb35931da3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_232_lessee_manager_cannot_put_vendor_passthru [0.160889s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-14700533-6145-4e01-9ce5-0e57fb039e46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_get_controller_reserved_names [0.051185s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_236_volume_volume_target_id_patch_service [0.170425s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/5f6e42f4-23f2-496e-8fd5-3bd92787efe2 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b30fd288-db44-4341-b40b-98a91bbc8dd3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_method_not_specified [0.055684s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_async [0.045718s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_233_lessee_member_cannot_put_vendor_passthru [0.143543s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ebdca75a-bfcb-4960-b09c-0d5678ace544 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer [0.159415s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c85bd03b-f439-4c15-9b06-9a2fd43cc81d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"FAKE_SETTING": {"created_at": "2025-11-11T18:58:42.254186+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "attribute_type": "Enumeration", "allowable_values": ["on", "off"], "lower_bound": null, "max_length": null, "min_length": null, "read_only": false, "reset_required": true, "unique": false, "upper_bound": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach [0.045197s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_237_volume_volume_target_id_delete_admin [0.163978s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/ef3f5c54-7169-4be0-957f-072eaabc9c07 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4b20604e-dfcd-44d9-b51b-0a949318cc78 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_byte_to_byte [0.046457s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_unicode_to_byte [0.041539s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_sync [0.045383s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_234_lessee_reader_cannot_put_vendor_passthru [0.175360s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-537118e6-0b68-4f0a-baeb-1982eaa3d71e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_240_conductors_get_admin [0.173772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-968b93b1-a20b-4006-9916-2f86a2d5789a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "test-conductor-node", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true}]} {2} ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_duplicates [0.045246s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_238_volume_volume_target_id_delete_member [0.163061s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/0ab4b19b-7d07-4824-9dcc-27f91a353341 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-53fadcef-aa8c-4ada-8488-db60e040472e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_max_ver_str [0.045668s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_235_owner_admin_cannot_delete_vendor_passthru [0.139742s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4550bfd1-5a8b-4187-8b45-c2372d5adb70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_min_ver_str [0.058894s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_241_conductors_get_member [0.172195s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-307a337b-2984-4e8b-80b4-4e8f6045d7b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_name_value_match [0.069804s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_239_volume_volume_target_id_delete_reader [0.228717s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/298f34e4-c446-4e06-8a4e-adef3ee9db1d GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-72e7cf40-5333-481a-bf6c-03781eb2913d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_242_conductors_get_observer [0.136266s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be93360b-d8c6-44bf-a37c-df07379dbb75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "test-conductor-node", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true}]} {2} ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume [0.135172s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-810ea9cf-e85c-4bf9-bc93-486532b130c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} GET /v1/volume/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d6577b5a-52f7-471e-8294-28d043931612 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} GET /volume/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2d8615cd-ca33-47a3-88ad-f24d7479b246 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/volume/connectors", "rel": "self"}, {"href": "http://localhost/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/volume/targets", "rel": "self"}, {"href": "http://localhost/volume/targets", "rel": "bookmark"}]} GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f9b24a14-91d6-4588-bc2f-ed6448a47bbf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": []} GET /volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a87faef5-00a7-4140-aa03-8144ce1443c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": []} GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b49f11d0-c70e-4b4f-823d-36a64772480f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": []} GET /volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2b4c861-a476-43af-b70d-d4eab61cc579 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": []} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_236_owner_manager_cannot_delete_vendor_passthru [0.241698s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-aedcfd73-e37b-46c9-a17b-ee9bfe899185 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume_invalid_api_version [0.066226s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/ WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-18b462dc-abec-4018-a905-65f090ce774d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_240_volume_volume_target_id_delete_service [0.183640s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/422ee58a-903d-4c63-8a39-82eee2cccc56 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-23695455-50a4-4496-a922-7822caf29d35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_243_conductors_hostname_get_admin [0.203827s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4fca6f7b-664b-4980-92b8-97a793931019 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:58:42.918080+00:00", "updated_at": "2025-11-11T18:58:42.918754+00:00", "hostname": "test-conductor-node", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true} {2} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid [0.080878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 204 No Content Openstack-Request-Id: req-4a44f9ee-8e04-4e88-8587-a02aecbad40b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid_invalid_api_version [0.066226s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_237_owner_service_cannot_delete_vendor_passthru [0.221694s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6d6e6f9b-a9b5-4e62-af93-f9c8bee011ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_241_nodes_volume_get_admin [0.132349s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dad9a3c1-b4ae-4c25-bd45-9adcf9e3a676 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_invalid_power_state [0.084750s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-61227c65-c3fd-4b4b-900c-85c79eb76bf1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"volume connector deletion\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"power on\\\".\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_244_conductors_hostname_get_member [0.185720s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ebe6e11f-bc08-4fa0-88d8-a5d1c1a1248d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_242_nodes_volume_get_member [0.124194s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b3f574e1-c15a-4e54-af3f-a380d4b4db84 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_node_locked [0.091277s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-fd9bc84e-0e9a-4fc8-9cb7-83fe9d424eb2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_238_owner_member_cannot_delete_vendor_passthru [0.193471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-af695ff2-2a1b-4b06-bd6b-520893a5c0d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_245_conductors_hostname_get_observer [0.165816s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ed5317cc-e7c1-438c-b023-4751c5280c91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:58:43.291468+00:00", "updated_at": "2025-11-11T18:58:43.292057+00:00", "hostname": "test-conductor-node", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_243_nodes_volume_get_reader [0.133116s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-846874bb-dae5-4359-8c11-bd6b593ae510 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/", "rel": "bookmark"}], "connectors": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors", "rel": "bookmark"}], "targets": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets", "rel": "bookmark"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_239_owner_reader_cannot_delete_vendor_passthru [0.187410s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2d776474-06d0-4db4-aa73-91fbb66b3e2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_246_allocations_post_admin [0.154758s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e4add397-4816-4f10-bdb4-566c7e61179a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_244_nodes_volume_connectors_get_admin [0.175336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-50c522e5-881f-4875-96a6-63135e4c5b02 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "ef9f7f55-1542-45e9-bb31-756df8ccba99", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/ef9f7f55-1542-45e9-bb31-756df8ccba99", "rel": "self"}, {"href": "http://localhost/volume/connectors/ef9f7f55-1542-45e9-bb31-756df8ccba99", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_245_nodes_volume_connectors_get_member [0.181106s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a977a12a-0470-4da7-a81c-f22095f29b47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "3b783e03-2f8a-4093-83bc-6be993629243", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/3b783e03-2f8a-4093-83bc-6be993629243", "rel": "self"}, {"href": "http://localhost/volume/connectors/3b783e03-2f8a-4093-83bc-6be993629243", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid [0.498330s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 204 No Content Openstack-Request-Id: req-92769ccd-7342-44e7-a001-385d3dffc5e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid_invalid_api_version [0.046456s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_invalid_power_state [0.038405s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7a4b535f-9bd2-43b8-abe7-4dfea443889b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The requested action \\\"volume target deletion\\\" can not be performed on node \\\"1be26c0b-03f2-4d2e-ae87-c02d7f33c123\\\" while it is in state \\\"power on\\\".\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_247_allocations_post_member ... SKIPPED: This endpoint's behavior supports allocation creation as a member with the new Role Based Access Control changes. Thus this test cannot both ensure prior and post-change behavior as it is actually valid moving forward. {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_246_nodes_volume_connectors_get_reader [0.200623s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b814dfb2-f39d-41d2-8577-248cec207f0e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "2f17b5b6-83f8-477e-b49f-5503f2301f55", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/2f17b5b6-83f8-477e-b49f-5503f2301f55", "rel": "self"}, {"href": "http://localhost/volume/connectors/2f17b5b6-83f8-477e-b49f-5503f2301f55", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_node_locked [0.090028s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-35f0d443-b20b-4742-b27c-55588846d99a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fake-node is locked by host fake-host, please retry after the current operation is completed.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_240_lessee_admin_cannot_delete_vendor_passthru [0.503018s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dcdd0ec8-d13b-4544-8790-2478d41cb3c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_hooks.TestPolicyDeprecation.test_policy_deprecation_check [0.042221s] ... ok {2} ironic.tests.unit.api.test_method.TestExpose.test_exception [0.050731s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things/ouch WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-59458671-0814-41cd-a982-878a418f2b5d {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"ouch\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_248_allocations_post_observer [0.209794s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5f6b4570-0148-43c4-bf9a-8b8c16cfb550 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_241_lessee_manager_cannot_delete_vendor_passthru [0.145608s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-58ead7b2-8b9e-4a4c-8317-d4bb8bddbe07 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_method.TestExpose.test_expose [0.044540s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things WITH {'name': 'foo', 'flag': True} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab7615a5-d16b-4463-8acf-1f798199399e {"foo": true} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_247_nodes_volume_targets_get_admin [0.221826s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6b8c8bc3-b6fc-48f4-8214-69373ab6cfdd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "d94448c4-aac7-4dc8-87dd-d481085bb44a", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/d94448c4-aac7-4dc8-87dd-d481085bb44a", "rel": "self"}, {"href": "http://localhost/volume/targets/d94448c4-aac7-4dc8-87dd-d481085bb44a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.test_method.TestExpose.test_expose_validation [0.070394s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things WITH {'name': 'foo', 'flag': 'truish'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-04e1da31-55d9-4123-8327-431b50e1f3f9 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Invalid flag: Unrecognized value 'truish', acceptable values are: '0', '1', 'f', 'false', 'n', 'no', 'off', 'on', 't', 'true', 'y', 'yes'\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_249_allocations_get_admin [0.105499s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-81e5c921-4932-45d3-b3cf-776ebeade010 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "73f1c2e5-db8c-417f-b96e-1a05ce67a8a9", "created_at": "2025-11-11T18:58:44.158487+00:00", "updated_at": "2025-11-11T18:58:44.163594+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/73f1c2e5-db8c-417f-b96e-1a05ce67a8a9", "rel": "self"}, {"href": "http://localhost/allocations/73f1c2e5-db8c-417f-b96e-1a05ce67a8a9", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {2} ironic.tests.unit.api.test_method.TestExpose.test_post_body [0.053151s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/things/ WITH {'three': 'three', 'four': 'four', 'five': 'five'} GOT Response: 201 Created Content-Type: application/json Openstack-Request-Id: req-2e8066a2-8fa4-44b0-b4d1-9e998aee4811 {"three": "three", "four": "four", "five": "five"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_250_allocations_get_member [0.066048s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d0f3de7c-1b04-4c46-8326-27ce864993a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_242_lessee_member_cannot_delete_vendor_passthru [0.203420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-72b1496d-8bf0-445b-8d1f-14c0bc3cd34a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_method.TestExpose.test_post_body_validation [0.069498s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/things/ WITH {'three': 'three', 'four': 'fourrrr', 'five': 'five'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-505f13b4-8708-4462-a9ee-964cc22220b9 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for body: 'fourrrr' is too long\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_method.TestExpose.test_response_204 [0.059963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things/no_content WITH {} GOT Response: 204 No Content Openstack-Request-Id: req-8142961a-8f7a-4ae8-8598-de0a4a4b1b98 {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_251_allocations_get_observer [0.140663s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f633125-30a8-46fe-b402-9afb44a96f8f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "d0542c53-1193-49cb-bb48-6e8ad5f300c7", "created_at": "2025-11-11T18:58:44.328137+00:00", "updated_at": "2025-11-11T18:58:44.335016+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d0542c53-1193-49cb-bb48-6e8ad5f300c7", "rel": "self"}, {"href": "http://localhost/allocations/d0542c53-1193-49cb-bb48-6e8ad5f300c7", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_248_nodes_volume_targets_get_member [0.244244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e1aa450a-aa74-44c2-ab6a-79d5e2cbda4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "69c685b8-0f5a-4f1a-80c5-f6c4d69ce0b4", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/69c685b8-0f5a-4f1a-80c5-f6c4d69ce0b4", "rel": "self"}, {"href": "http://localhost/volume/targets/69c685b8-0f5a-4f1a-80c5-f6c4d69ce0b4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.test_method.TestExpose.test_response_content [0.054011s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things/response_content WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a42740d2-2765-48cd-add0-6d84e6a542e0 "nothing" {2} ironic.tests.unit.api.test_method.TestExpose.test_response_custom_status [0.052924s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things/response_custom_status WITH {} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-5da838a1-f89d-40d0-9b80-f5ce4cf9871f "accepted" {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_243_lessee_reader_cannot_delete_vendor_passthru [0.197925s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-226325a7-84d9-4cd7-85ea-8167b534622b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_disable_osp_wsgi_request [0.048663s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_252_allocations_allocation_id_get_admin [0.163177s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/5bb60110-b60a-4ad9-bafd-afae4e23d26e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-421a1230-da47-4378-91f5-526ec14d06b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5bb60110-b60a-4ad9-bafd-afae4e23d26e", "created_at": "2025-11-11T18:58:44.479164+00:00", "updated_at": "2025-11-11T18:58:44.488836+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/5bb60110-b60a-4ad9-bafd-afae4e23d26e", "rel": "self"}, {"href": "http://localhost/allocations/5bb60110-b60a-4ad9-bafd-afae4e23d26e", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_enable_osp_wsgi_request [0.048501s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_249_nodes_volume_targets_get_reader [0.225044s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2a9a519-0250-465b-b5d7-f5fe816a493e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "c19f0ec6-0d9b-4831-a786-c297c2008d62", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/c19f0ec6-0d9b-4831-a786-c297c2008d62", "rel": "self"}, {"href": "http://localhost/volume/targets/c19f0ec6-0d9b-4831-a786-c297c2008d62", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid [0.032341s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_253_allocations_allocation_id_get_member [0.135408s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/3c3f929b-5ace-40c2-af04-a0850cb99cae WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-30914326-baa1-4b7c-bd00-0166a50fc04f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 3c3f929b-5ace-40c2-af04-a0850cb99cae could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_244_owner_reader_get_traits [0.205361s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-900ef720-d8f7-4478-9ffc-3c502f300e81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"traits": []} {2} ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid_colon_key_name [0.052367s] ... ok {2} ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema [0.052984s] ... ok {2} ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_args [0.045029s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_254_allocations_allocation_id_get_observer [0.137691s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/79b4f5d8-ced3-4534-a4e2-17e119976bf4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2d0ede47-d1a7-4831-821d-523d43dc7693 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "79b4f5d8-ced3-4534-a4e2-17e119976bf4", "created_at": "2025-11-11T18:58:44.775951+00:00", "updated_at": "2025-11-11T18:58:44.781178+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/79b4f5d8-ced3-4534-a4e2-17e119976bf4", "rel": "self"}, {"href": "http://localhost/allocations/79b4f5d8-ced3-4534-a4e2-17e119976bf4", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_250_drivers_get_admin [0.212407s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93777d56-fc76-4aae-9167-e01c0f4e7b34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"drivers": []} {2} ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_kwargs [0.055070s] ... ok {2} ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_mixed [0.058983s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_245_lessee_reader_get_traits [0.235578s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a39b49a0-158b-4765-a621-0cf88ecce51a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"traits": []} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_empty_response [0.039184s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_255_allocations_allocation_id_patch_admin [0.168224s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/e8295545-cc39-4a41-a77f-137a1a21b98a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-eaff6ce5-cd96-4a6c-8ead-4de50bd219ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e8295545-cc39-4a41-a77f-137a1a21b98a", "created_at": "2025-11-11T18:58:44.920012+00:00", "updated_at": "2025-11-11T18:58:45.010882+00:00", "candidate_nodes": [], "extra": {"test": "testing"}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/e8295545-cc39-4a41-a77f-137a1a21b98a", "rel": "self"}, {"href": "http://localhost/allocations/e8295545-cc39-4a41-a77f-137a1a21b98a", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_multiline [0.042451s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_251_drivers_get_member [0.200501s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a8f2f5ae-6905-4d65-bd99-42ee0e66fdc5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"drivers": []} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_multiline_no_file [0.035353s] ... ok {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_nomatch_line [0.038246s] ... ok {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_one_line [0.027592s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_256_allocations_allocation_id_patch_member [0.131922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/89d08cfa-f889-4076-a989-c3d89812d741 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5fe8e3cc-bcee-4645-b8a7-c3ad1ffaaaa4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 89d08cfa-f889-4076-a989-c3d89812d741 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_246_third_party_admin_cannot_get_traits [0.203894s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-38d5d6c3-b073-4463-b18a-91c284394f9f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum [0.048265s] ... ok {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_glance [0.039227s] ... ok {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_http_url [0.042146s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_257_allocations_allocation_id_patch_observer [0.136376s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/503eab01-8497-428e-aa75-93a3b9dfa09d WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f8f92612-9e4a-489c-b9f6-07f6b3b969f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_https_url [0.033512s] ... ok {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_not_allowed [0.045427s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_247_owner_admin_can_put_traits [0.210365s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-24bd3337-77b8-4819-b141-6524b7807bc6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_sha256 [0.050095s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_258_allocations_allocation_id_delete_admin [0.125523s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/66b0d32c-b6f4-4d67-becd-0a70980126f4 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-710b0aa4-86f6-4408-8311-6f9de5a5d766 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_sha512 [0.037075s] ... ok {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_no_checksum_file_url [0.041705s] ... ok {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_is_checksum_url [0.036445s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_259_allocations_allocation_id_delete_member [0.138140s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/351fab37-052e-45af-b506-b3e8a9ee1ceb GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c2e61e36-f570-4f62-8e6f-4a43afeb6d25 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 351fab37-052e-45af-b506-b3e8a9ee1ceb could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_is_checksum_url_file [0.036429s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_248_owner_manager_can_put_traits [0.211066s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f6a42f37-826a-4096-96e5-0b4bfdb8f8f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_is_checksum_url_string [0.042479s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_260_allocations_allocation_id_delete_observer [0.123704s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/b8da502d-32d7-4988-9237-32a56a19ff7b GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e8d8d318-c6e5-4641-9ef6-b6f6bd27aba8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_252_drivers_get_reader [0.648314s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-67d1a915-d947-411f-ac52-590605d05d6d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"drivers": []} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_249_owner_service_can_put_traits [0.174127s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-104b00e0-85d7-4ca0-a7f1-824bc16d7b19 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_250_owner_member_cannot_put_traits [0.097640s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e6a35946-0ef4-4e7a-93a5-db059d150bd4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_253_drivers_driver_name_get_admin [0.158903s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-544b2dad-c612-4564-970a-8c490e43b561 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_261_nodes_allocation_get_admin [0.233179s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-39412a10-d452-4cc3-adbc-325a0419e13e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b7c7b06f-a2ea-46d1-885d-7f42647eefe7", "created_at": "2025-11-11T18:58:45.743965+00:00", "updated_at": "2025-11-11T18:58:45.760703+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/b7c7b06f-a2ea-46d1-885d-7f42647eefe7", "rel": "self"}, {"href": "http://localhost/allocations/b7c7b06f-a2ea-46d1-885d-7f42647eefe7", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_251_lessee_admin_cannot_put_traits [0.101653s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-34c23c7b-81d7-427a-a22c-8aa04dbe1497 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_254_drivers_driver_name_get_member [0.129447s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bbb87c04-b949-4ae7-9f7a-415ae792bce0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_262_nodes_allocation_get_member [0.184326s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b7387929-04de-4bff-ae99-7f3ae7660a17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_255_drivers_driver_name_get_reader [0.166737s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e23a4366-44bb-4c6b-9f3a-ac8fc3c9a271 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Could not find the following driver(s) or hardware type(s): fake-driverz.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_252_lessee_manager_cannot_put_traits [0.215101s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-30005987-ca92-415f-9b93-2d1057d2d325 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_263_nodes_allocation_get_observer [0.179487s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a3b69786-5ee3-43b4-b827-6ab2b630214a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "23149d05-a5e1-439e-bbe2-0c2f14fa127d", "created_at": "2025-11-11T18:58:46.190630+00:00", "updated_at": "2025-11-11T18:58:46.199891+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/23149d05-a5e1-439e-bbe2-0c2f14fa127d", "rel": "self"}, {"href": "http://localhost/allocations/23149d05-a5e1-439e-bbe2-0c2f14fa127d", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.common.test_cinder.TestCinderClient.test__get_cinder_session [0.716804s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_253_lessee_member_cannot_put_traits [0.199690s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5971fd1d-de19-4d00-9303-26582fa053cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_256_drivers_properties_get_admin [0.213422s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-44747a5c-9287-4832-9d75-19430ad2f8f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_264_nodes_allocation_delete_admin [0.137001s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-9b794232-3c0f-4e2b-b013-16f32a1d0f16 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_257_drivers_properties_get_member [0.125090s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d78ee6ce-9db4-4d3f-8ac0-9964b9fa9595 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_265_nodes_allocation_delete_member [0.135206s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6fbf1918-eac3-4952-97b4-df0ae609d8af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_254_third_party_admin_cannot_put_traits [0.196778s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-05b446a8-5037-4e08-9b1b-145770c1f48e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_258_drivers_properties_get_reader [0.136936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-17b15c74-3ade-4389-8340-56576820ba90 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_266_nodes_allocation_delete_observer [0.148641s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6beb2541-cb90-497d-bb4c-0f78ac3476fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_255_owner_admin_can_delete_traits [0.212744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-543713df-34ed-41f2-9430-9c502bf29e68 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_259_drivers_raid_logical_disk_properties_get_admin [0.156592s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-18445232-87eb-498f-8c8c-29cffe98b7b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_267_deploy_templates_post_admin [0.149804s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/be56fe19-58d2-4f31-b714-ba19aba0cd43 Openstack-Request-Id: req-1a21eb14-28e6-40ab-9d14-0c5b95fa2085 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "be56fe19-58d2-4f31-b714-ba19aba0cd43", "created_at": "2025-11-11T18:58:46.852167+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/be56fe19-58d2-4f31-b714-ba19aba0cd43", "rel": "self"}, {"href": "http://localhost/deploy_templates/be56fe19-58d2-4f31-b714-ba19aba0cd43", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_256_owner_manager_can_delete_traits [0.156806s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-29276bb0-7309-446d-8b64-d99e58333f38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_260_drivers_raid_logical_disk_properties_get_member [0.152833s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cf9c86c8-2ad0-4a15-8f50-a21db2a7d3c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_257_owner_member_cannot_delete_traits [0.073690s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_MEOW GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-575386fd-3ac1-4c21-a69d-7fcedd709119 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_268_deploy_templates_post_member [0.197663s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6862c413-ea6d-4beb-837c-56c31dfc6113 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_261_drivers_raid_logical_disk_properties_get_reader [0.140253s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-be1f15ab-c90b-485f-bdbb-19ea17eac0e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_258_lessee_admin_cannot_delete_traits [0.124680s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-550db1de-8f6e-4bcc-93b4-e8b659427357 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_269_deploy_templates_post_observer [0.214287s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-86c24b3d-79b1-4e06-bbad-6a3c7e3dfd5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_259_lessee_manager_cannot_delete_traits [0.119587s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-35dc5516-9906-4863-aee2-92bd8f386b56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_262_drivers_vendor_passthru_methods_get_admin [0.191164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4be286d7-00ff-4ed1-b76a-857f8c424585 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_260_lessee_member_cannot_delete_traits [0.164785s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-31761b29-6a54-489d-92a7-d801a5645a86 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_270_deploy_templates_get_admin [0.247871s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d4cce58e-58a5-4dba-9327-61bb8024bc64 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "24e1d85e-b521-414e-bafa-5b7c96538eec", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/24e1d85e-b521-414e-bafa-5b7c96538eec", "rel": "self"}, {"href": "http://localhost/deploy_templates/24e1d85e-b521-414e-bafa-5b7c96538eec", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_263_drivers_vendor_passthru_methods_get_member [0.217026s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e9d0f702-eed3-4ead-ae30-4df072869b1d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_cinder.TestCinderClient.test_get_cinder_client_with_context [1.224715s] ... ok {2} ironic.tests.unit.common.test_fsm.FSMTest.test__validate_target_state [0.036826s] ... ok {2} ironic.tests.unit.common.test_fsm.FSMTest.test_initialize [0.038922s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_261_third_party_admin_cannot_delete_traits [0.170095s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_MEOW GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-139112ed-779d-4a68-9616-67b41a9c4726 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable [0.041032s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_264_drivers_vendor_passthru_methods_get_reader [0.149458s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fcef5525-2108-49ee-9711-921dfb4011c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_invalid_state [0.041158s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_271_deploy_templates_get_member [0.207046s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-888a3807-8bac-403b-90b6-c933057eb7b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_not [0.035929s] ... ok {2} ironic.tests.unit.common.test_fsm.FSMTest.test_process_event [0.034474s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_262_owner_admin_can_put_custom_traits [0.136771s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cc286128-0bfe-4c47-82c8-b849d9260a49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_265_drivers_vendor_passthru_get_admin [0.132185s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-19ca0e52-544c-4e8f-98dc-b8774159529e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_fsm.FSMTest.test_target_state_stable [0.035900s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_263_owner_manager_can_put_custom_traits [0.114379s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8f889efc-d97a-40d2-b8bb-687ec2b0d5c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_272_deploy_templates_get_observer [0.191216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2e4889fe-8352-4fce-89e1-ff6bd9956d1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "a3ad1e3e-49b4-4fa0-ad09-a208afa849e8", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/a3ad1e3e-49b4-4fa0-ad09-a208afa849e8", "rel": "self"}, {"href": "http://localhost/deploy_templates/a3ad1e3e-49b4-4fa0-ad09-a208afa849e8", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_266_drivers_vendor_passthru_get_member [0.122512s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dbe880be-6fe5-49c6-abdc-a55992388d7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_264_owner_member_cannot_put_custom_traits [0.145285s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/traits/CUSTOM_TRAIT2 WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9fb380cf-7d06-4ace-aa29-2652ce604747 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_267_drivers_vendor_passthru_get_reader [0.127249s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-de480801-ecc7-4bdc-ab99-1342af9b44fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_265_lessee_admin_cannot_put_custom_traits [0.122829s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1c40a0c1-ff3a-4649-bc07-0f64377e591f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin [0.262639s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/6978f5e0-c501-4f85-97d8-77e437e0de7c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3622c984-8f89-4178-8031-135f473528fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6978f5e0-c501-4f85-97d8-77e437e0de7c", "created_at": "2025-11-11T18:58:48.079819+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/6978f5e0-c501-4f85-97d8-77e437e0de7c", "rel": "self"}, {"href": "http://localhost/deploy_templates/6978f5e0-c501-4f85-97d8-77e437e0de7c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_268_drivers_vendor_passthru_post_admin [0.150424s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-eb20a953-a0f8-4c71-b6df-9d0dddfacb28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_266_lessee_manager_cannot_put_custom_traits [0.143653s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-86e32664-f7e4-4141-b85b-91aa879b808c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member [0.140304s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/1ff3fbf0-ebaf-485c-9d20-c22d0482dc94 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-22ee9c0b-6534-4162-821c-f32b1598143b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_269_drivers_vendor_passthru_post_member [0.169197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ed2ed91b-a91d-4969-88f2-c93c51dc464d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_267_lessee_member_cannot_put_custom_traits [0.126652s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b10758c5-94ee-4a4d-b33c-da32b1f6ab4b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:traits:set\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__config_auth [0.640118s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer [0.166065s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/b46d8f8e-bc82-4abb-88da-b678152f2dc9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-08a598e1-fd2e-4335-a472-a7e78849e32d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b46d8f8e-bc82-4abb-88da-b678152f2dc9", "created_at": "2025-11-11T18:58:48.438205+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/b46d8f8e-bc82-4abb-88da-b678152f2dc9", "rel": "self"}, {"href": "http://localhost/deploy_templates/b46d8f8e-bc82-4abb-88da-b678152f2dc9", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_268_third_party_admin_cannot_put_custom_traits [0.141433s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/traits/CUSTOM_TRAIT2 WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a1f95fa9-7303-4a58-94df-57cb695d5cce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_270_drivers_vendor_passthru_post_reader [0.224562s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6fdd7c3a-99c1-47cc-b6d3-943865b8ebf5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_269_owner_reader_get_vifs [0.146259s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5e19f076-613a-4024-8358-1c90c5fa09e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_271_drivers_vendor_passthru_put_admin [0.137912s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-92ca0ecd-a537-455d-8127-43ef9ea66e57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin [0.275342s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/4522cd4f-6c41-4ccd-99bd-da985d63fbaa WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f27fee0f-33e0-4d3e-8a9d-1ab29f9f2f76 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4522cd4f-6c41-4ccd-99bd-da985d63fbaa", "created_at": "2025-11-11T18:58:48.632763+00:00", "updated_at": "2025-11-11T18:58:48.763400+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4522cd4f-6c41-4ccd-99bd-da985d63fbaa", "rel": "self"}, {"href": "http://localhost/deploy_templates/4522cd4f-6c41-4ccd-99bd-da985d63fbaa", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_272_drivers_vendor_passthru_put_member [0.126988s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-09794fd9-3291-44ec-9d73-e752af3e19f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_270_lessee_reader_get_vifs [0.224132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a56a3795-a3f3-45ca-9a8c-e2ab4a0de1bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member [0.227768s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/96d2c427-7e7b-4dff-aaeb-d9d977729f7b WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a0da2724-b700-421e-95af-b0e371726483 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_273_drivers_vendor_passthru_put_reader [0.147632s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-35d1cd94-ddea-4561-a957-c386f7851bd2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_271_third_party_admin_cannot_get_vifs [0.171939s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9c3e7be5-78f7-49a4-a58d-c743f487503b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer [0.136168s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/4fb75a9a-72ec-4fcd-8da8-918eb969e874 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a78ff288-253b-46f3-a959-b49bb95912e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_272_owner_admin_can_post_vifs [0.083894s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-0bef24a2-1ae6-471c-b3be-3dddceee353d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_274_drivers_vendor_passthru_delete_admin [0.239766s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/drivers/fake-driverz/vendor_passthru?method=test GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-66de6f72-0f8e-44e9-b1cb-d6297313d3b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"No conductors registered.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin [0.128077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/89937244-553a-4bd2-8d2b-c3b87e82d1e2 GOT Response: 204 No Content Openstack-Request-Id: req-c9275a2c-0ee7-425a-9de8-57092b664323 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_275_drivers_vendor_passthru_delete_reader [0.173854s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/drivers/fake-driverz/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a17fd333-6658-44ee-8111-f5fbf3db6751 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:driver:vendor_passthru\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__no_auth [1.102583s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_276_nodes_bios_get_admin [0.246219s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-316e79f6-f6d3-406b-a23e-546775643aa2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": [{"created_at": "2025-11-11T18:58:49.594736+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member [0.461472s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/a80f41ab-b2d3-436c-a0e3-b35c0d72a32d GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-94782f11-20d2-43be-8618-4924d985ea7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer [0.119326s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/c92f3c26-e9c1-4007-b491-c26fcc6ad594 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-12e0f53a-5b56-4dda-960b-f84ec6d29972 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_277_nodes_bios_get_member [0.205088s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9a8c94c8-3a44-4476-a3aa-4b61f9de45c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": [{"created_at": "2025-11-11T18:58:49.841847+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_278_nodes_bios_get_reader [0.087667s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f5af1252-0e99-4b6f-b5a8-24cf03720de9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": [{"created_at": "2025-11-11T18:58:49.964646+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_282_chassis_post_admin [0.135978s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/338fb4ee-38dc-499d-8536-d9b9f5071c95 Openstack-Request-Id: req-804dbba9-83e7-4ad3-adc7-5183cdfa2753 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "338fb4ee-38dc-499d-8536-d9b9f5071c95", "created_at": "2025-11-11T18:58:50.003121+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/338fb4ee-38dc-499d-8536-d9b9f5071c95", "rel": "self"}, {"href": "http://localhost/chassis/338fb4ee-38dc-499d-8536-d9b9f5071c95", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/338fb4ee-38dc-499d-8536-d9b9f5071c95/nodes", "rel": "self"}, {"href": "http://localhost/chassis/338fb4ee-38dc-499d-8536-d9b9f5071c95/nodes", "rel": "bookmark"}]]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_279_nodes_bios_bios_setting_get_admin [0.119151s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f16e8248-642d-45c4-9b99-3a6bf228d8d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"FAKE_SETTING": {"created_at": "2025-11-11T18:58:50.083289+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "attribute_type": "Enumeration", "allowable_values": ["on", "off"], "lower_bound": null, "max_length": null, "min_length": null, "read_only": false, "reset_required": true, "unique": false, "upper_bound": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_273_service_can_post_vifs_for_own_project [0.923200s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-385a7775-8099-4f63-8a05-43453eed10d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__token_auth [0.627861s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_283_chassis_post_member [0.175107s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b187eda8-a6f6-4526-a557-a439daa54ee2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_280_nodes_bios_bios_setting_get_member [0.174334s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fbe56d01-18fd-416d-a3c8-f5ba3258b69f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"FAKE_SETTING": {"created_at": "2025-11-11T18:58:50.241579+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "attribute_type": "Enumeration", "allowable_values": ["on", "off"], "lower_bound": null, "max_length": null, "min_length": null, "read_only": false, "reset_required": true, "unique": false, "upper_bound": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_284_chassis_post_observer [0.108938s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-45130e4c-ace3-483e-ad2d-94589b96c3af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_274_service_cannot_post_vifs_for_other_project [0.154015s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-487caee6-4a50-4aa4-9dae-1a8573575080 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_281_nodes_bios_bios_setting_get_reader [0.139170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-560c14ab-4b97-4fc6-8f58-ea46a2b46c70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"FAKE_SETTING": {"created_at": "2025-11-11T18:58:50.384802+00:00", "updated_at": null, "name": "FAKE_SETTING", "value": "FAKE_SETTING", "attribute_type": "Enumeration", "allowable_values": ["on", "off"], "lower_bound": null, "max_length": null, "min_length": null, "read_only": false, "reset_required": true, "unique": false, "upper_bound": null, "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "self"}, {"href": "http://localhost/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING", "rel": "bookmark"}]}} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_285_chassis_get_admin [0.156591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3001994b-6486-47d2-be2c-b83c0cc8f954 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_275_owner_manager_can_post_vifs [0.141374s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-675d1259-c54b-4a5d-bd9a-d4aaa22ad16c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_282_conductors_get_admin [0.135666s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-77ed7fe1-e9af-4342-8da0-82e735b85485 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "test-conductor-node", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_286_chassis_get_member [0.142714s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-435ac6eb-1dab-4705-988c-0c1b3afdb50a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_276_lessee_admin_can_post_vifs [0.137600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e179bd7d-6b35-46ee-bb88-cbbfe8eb42a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_283_conductors_get_member [0.131511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8bbe9a25-6995-45d2-b2e8-3eefc38d7e9d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "test-conductor-node", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_287_chassis_get_observer [0.135434s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5a3166bd-7f15-46ad-8605-abdf9a6c6b69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_277_lessee_manager_can_post_vifs [0.128414s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4b2429f6-fabb-40d7-8e76-297cdb94d282 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_284_conductors_get_reader [0.126176s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2ea92298-4b4c-4955-96ef-d9c591ba572d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"conductors": [{"hostname": "test-conductor-node", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true}]} {2} ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service_client_already_set [0.651624s] ... ok {2} ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_add_items_to_cache [0.052573s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_288_chassis_detail_get_admin [0.156719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0507bfad-a3b8-430f-b9be-8092bfca002f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:50.819652+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_278_owner_member_can_post_vifs [0.139655s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c12deb26-b3c2-4037-b0a3-953fe582984f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_do_not_return_expired_tempurls [0.062193s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_285_conductors_hostname_get_admin [0.125009s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f61720ca-031d-462c-8cfa-55293e1f6a61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:58:50.912579+00:00", "updated_at": "2025-11-11T18:58:50.913180+00:00", "hostname": "test-conductor-node", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true} {2} ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_remove_expired_items_from_cache [0.039474s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_279_lessee_member_cannot_post_vifs [0.131729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2b0ae98b-d396-460b-b15c-8536b048a59f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_return_cached_tempurl [0.047366s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_289_chassis_detail_get_member [0.151394s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ee49b5d9-6ff8-418e-a75d-6e7f3ffcc345 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_286_conductors_hostname_get_member [0.126133s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d541a9b4-4520-4c2c-aa7e-b529ce4ab6a5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:58:51.044840+00:00", "updated_at": "2025-11-11T18:58:51.049761+00:00", "hostname": "test-conductor-node", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true} {2} ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_disabled [0.053312s] ... ok {2} ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_enabled [0.055499s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_280_owner_reader_cannot_post_vifs [0.130230s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4ce0ec47-76d2-4003-ac1d-b7487c41a65b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_290_chassis_detail_get_observer [0.130617s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-006f64f6-5a70-47a9-8e73-618c0a4b8c01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:51.128547+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_287_conductors_hostname_get_reader [0.132787s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-616c8d86-ece0-475e-ab9c-b0ce84ca626b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"created_at": "2025-11-11T18:58:51.179172+00:00", "updated_at": "2025-11-11T18:58:51.179787+00:00", "hostname": "test-conductor-node", "conductor_group": "", "drivers": ["fake-driver", "null-driver"], "links": [{"href": "http://localhost/v1/conductors/test-conductor-node", "rel": "self"}, {"href": "http://localhost/conductors/test-conductor-node", "rel": "bookmark"}], "alive": true} {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_automatic_retry [0.070922s] ... ok {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_driver_not_found [0.070216s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_281_lessee_reader_cannot_post_vifs [0.144277s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-44c3a67c-ea3f-4d21-8c29-107bfc5e9ab5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:attach\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_291_chassis_chassis_id_get_admin [0.149021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8acbcfe0-72ab-47d2-a357-66895b96dca6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:51.267254+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success [0.065642s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_288_allocations_post_admin [0.144881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a339a20a-6e94-4efc-9309-850446cdac46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success_groups [0.068618s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_292_chassis_chassis_id_get_member [0.136021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a40e9574-51d1-49a1-8f14-acc415d49725 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:get\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_282_third_party_admin_cannot_post_vifs [0.145601s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f8a2e16c-b833-4bd2-9768-241c0ab13238 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_reset_interval [0.062012s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_289_allocations_post_member [0.143860s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a93794b7-7ac7-460a-a27d-3f79fb9d0d67 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_reset_interval_not_happen_sqlite [0.050105s] ... ok {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_uncached [0.043563s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_293_chassis_chassis_id_get_observer [0.130545s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dcbfc93e-6a6b-4588-8c0c-96fc04774375 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:51.542946+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_283_owner_admin_delete_vifs [0.143574s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c44d2c20-af5c-4c8b-b0f4-b4ce91594005 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_external_ip [0.048266s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_290_allocations_post_reader [0.135090s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1d06f46a-4dfa-4ec6-9044-9262e7cfd9e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_external_ip_node_override [0.064155s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_284_owner_manager_delete_vifs [0.125025s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8c416e21-ae23-4348-bf0a-38f00e858f87 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_294_chassis_chassis_id_patch_admin [0.154272s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b649d1d0-1ad9-45aa-a5f6-211bb8c7a6d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:51.680415+00:00", "updated_at": "2025-11-11T18:58:51.750809+00:00", "description": "meow", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {2} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_local_copy [0.057807s] ... ok {2} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_local_link [0.054978s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_285_lessee_admin_can_delete_vifs [0.131241s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-9d9c827a-b2f4-4ecc-8928-552b5c428772 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_295_chassis_chassis_id_patch_member [0.145290s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0755285e-f8fa-489f-8079-5561da81c7d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_286_lessee_manager_can_delete_vifs [0.126798s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-62cabe0e-c504-4e8a-bab4-dff2bf9edda1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_296_chassis_chassis_id_patch_observer [0.125175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ffe23a7c-543f-4656-bf2f-4b89e630b879 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_287_owner_member_can_delete_vifs [0.124976s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-db7445bd-d4e4-4fde-bbb0-2bb01ad59483 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_291_allocations_get_admin [0.507466s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9a0db337-c9a4-4b5e-a05b-1730d4c933cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "0560c98a-7443-405f-947c-09465ccdb7cf", "created_at": "2025-11-11T18:58:52.080312+00:00", "updated_at": "2025-11-11T18:58:52.089043+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/0560c98a-7443-405f-947c-09465ccdb7cf", "rel": "self"}, {"href": "http://localhost/allocations/0560c98a-7443-405f-947c-09465ccdb7cf", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_297_chassis_chassis_id_delete_admin [0.140295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 204 No Content Openstack-Request-Id: req-2dfaf3d6-7c92-42d3-a0a0-14d6e3f7bed0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_288_lessee_member_cannot_delete_vifs [0.140518s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8eb501ce-e8ce-4914-bd66-5fd2f501534c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:vif:detach\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_298_chassis_chassis_id_delete_member [0.134172s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-08398f46-0933-4104-8ddb-6ff4b90d1acc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_292_allocations_get_member [0.166734s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-924a07d3-d2fe-44eb-9639-bc100f43e7fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "cba3724f-3a5e-43f3-bd32-b7ba2f759a9c", "created_at": "2025-11-11T18:58:52.222236+00:00", "updated_at": "2025-11-11T18:58:52.232399+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/cba3724f-3a5e-43f3-bd32-b7ba2f759a9c", "rel": "self"}, {"href": "http://localhost/allocations/cba3724f-3a5e-43f3-bd32-b7ba2f759a9c", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_289_third_party_admin_cannot_delete_vifs [0.121493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-71f7bed0-9dd3-4802-a003-3faa7da4a082 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_293_allocations_get_reader [0.102095s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-34aa6c3f-a3ba-4d7c-a9cf-3d154607c43f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "d49e590b-0846-4af8-a336-f002ced2029b", "created_at": "2025-11-11T18:58:52.373260+00:00", "updated_at": "2025-11-11T18:58:52.377207+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/d49e590b-0846-4af8-a336-f002ced2029b", "rel": "self"}, {"href": "http://localhost/allocations/d49e590b-0846-4af8-a336-f002ced2029b", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_299_chassis_chassis_id_delete_observer [0.147128s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7954a644-ced8-4230-a7ff-20e3fd6d35cf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_local_link_no_restorecon [0.680299s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_290_service_can_delete_vifs [0.096348s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d0ea681f-fe52-46bc-a002-317fa64d0830 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_291_service_cannot_delete_other_nodes_vifs [0.078691s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/vifs/0e21d58f-5de2-4956-85ff-33935ea1ca01 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1138a779-aaf4-43ff-b9ba-d467c29d0be2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_unpublish_local [0.092150s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_294_allocations_allocation_id_get_admin [0.176062s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/6d6b3f7c-db06-433d-81f2-c83bf11cc0a9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-27cb8d6b-a0a0-493a-b288-64936b3bddd6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6d6b3f7c-db06-433d-81f2-c83bf11cc0a9", "created_at": "2025-11-11T18:58:52.507100+00:00", "updated_at": "2025-11-11T18:58:52.511998+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/6d6b3f7c-db06-433d-81f2-c83bf11cc0a9", "rel": "self"}, {"href": "http://localhost/allocations/6d6b3f7c-db06-433d-81f2-c83bf11cc0a9", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_300_node_history_get_admin [0.184879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b8d44143-0764-455f-80aa-5c2ed95aa6be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "aba4f7f6-3ce3-4560-b5c3-2a79e96839ab", "created_at": "2025-11-11T18:58:52.585304+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/aba4f7f6-3ce3-4560-b5c3-2a79e96839ab", "rel": "self"}]}]} {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy [0.069358s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_292_owner_readers_can_get_indicators [0.080230s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-15ad2ef3-9d64-48b2-91c3-5cbbb1998ca2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_293_lesse_readers_can_get_indicators [0.065153s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators WITH {} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5f630a16-d4d2-4758-b522-944cd47deca4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_fail [0.076277s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_295_allocations_allocation_id_get_member [0.139936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/95685f6e-b130-4eeb-8e48-2a82983fb76d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dbbec1a2-cc18-44b1-9f02-474b645c70d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "95685f6e-b130-4eeb-8e48-2a82983fb76d", "created_at": "2025-11-11T18:58:52.693830+00:00", "updated_at": "2025-11-11T18:58:52.699151+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/95685f6e-b130-4eeb-8e48-2a82983fb76d", "rel": "self"}, {"href": "http://localhost/allocations/95685f6e-b130-4eeb-8e48-2a82983fb76d", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_301_node_history_get_member [0.160852s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1ed44bfb-c653-4618-8cfb-77fda443105b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_294_third_party_admin_cannot_get_indicators [0.072616s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ef7bcff6-955e-431e-a0b8-0730a2358fa7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link [0.051699s] ... ok {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_symlink [0.051262s] ... ok {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_show [0.046185s] ... ok {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href [0.029768s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_296_allocations_allocation_id_get_reader [0.192002s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/0823873f-0875-4e83-9bcc-dd368b7df099 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-16eb2ab3-b403-42b4-a750-cf092ce2f3ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0823873f-0875-4e83-9bcc-dd368b7df099", "created_at": "2025-11-11T18:58:52.843441+00:00", "updated_at": "2025-11-11T18:58:52.848042+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/0823873f-0875-4e83-9bcc-dd368b7df099", "rel": "self"}, {"href": "http://localhost/allocations/0823873f-0875-4e83-9bcc-dd368b7df099", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_295_owner_reader_can_get_indicator_status ... SKIPPED: API appears to be broken and should be patched outside of this work. {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_empty_allowlist [0.048258s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_302_node_history_get_observer [0.216037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2b3f9a40-f5e1-4e74-851d-261f27cc2085 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "6bc7249e-8d90-4f74-9482-3020a7115f9e", "created_at": "2025-11-11T18:58:52.955921+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/6bc7249e-8d90-4f74-9482-3020a7115f9e", "rel": "self"}]}]} {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_in_allowlist [0.049831s] ... ok {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_not_in_allowlist [0.042045s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_296_lessee_reader_not_get_indicator_status ... SKIPPED: API appears to be broken and should be patched outside of this work. {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_297_allocations_allocation_id_patch_admin [0.181493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/25d63b99-022b-40b4-8aa9-6343408cfa4d WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3f56c32c-6ca4-485a-82de-f425a3ec47cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "25d63b99-022b-40b4-8aa9-6343408cfa4d", "created_at": "2025-11-11T18:58:53.045355+00:00", "updated_at": "2025-11-11T18:58:53.148452+00:00", "candidate_nodes": [], "extra": {"test": "testing"}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/25d63b99-022b-40b4-8aa9-6343408cfa4d", "rel": "self"}, {"href": "http://localhost/allocations/25d63b99-022b-40b4-8aa9-6343408cfa4d", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_path_not_found_or_not_file [0.056599s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_303_node_history_get_entry_admin [0.142840s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4e64dd35-a07e-47c5-956d-6c3860d61237 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6f47e886-eb7b-4aa3-97b5-aa0d62880872 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4e64dd35-a07e-47c5-956d-6c3860d61237", "created_at": "2025-11-11T18:58:53.132192+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4e64dd35-a07e-47c5-956d-6c3860d61237", "rel": "self"}]} {2} ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_excludes_None [0.093772s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_297_owner_member_can_set_indicator [0.154453s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/management/indicators/component/magic_light WITH None GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-174fd079-aef7-48fd-b15e-aaff72a4a2b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_304_node_history_get_entry_member [0.138574s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/6ac137f4-d2cb-439b-9caf-8180d4b49bb2 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-08bbe6a1-b82d-4333-b238-af09d2836662 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_298_allocations_allocation_id_patch_member [0.173075s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/0176d0bf-3cfd-426c-bb13-11b076fc332a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1ab19119-7d61-4135-966b-04f4fdb12741 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0176d0bf-3cfd-426c-bb13-11b076fc332a", "created_at": "2025-11-11T18:58:53.224591+00:00", "updated_at": "2025-11-11T18:58:53.328506+00:00", "candidate_nodes": [], "extra": {"test": "testing"}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/0176d0bf-3cfd-426c-bb13-11b076fc332a", "rel": "self"}, {"href": "http://localhost/allocations/0176d0bf-3cfd-426c-bb13-11b076fc332a", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_multiple_ports [0.092001s] ... ok {2} ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_no_ports [0.080976s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_305_node_history_get_entry_observer [0.139543s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/e7775ff2-43a6-41ed-9ad9-a223901cbee1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ed24daf7-5018-4037-a983-85dfbe8cd81c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e7775ff2-43a6-41ed-9ad9-a223901cbee1", "created_at": "2025-11-11T18:58:53.413548+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/e7775ff2-43a6-41ed-9ad9-a223901cbee1", "rel": "self"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_298_lessee_member_cannot_set_indicator [0.167306s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/management/indicators/component/magic_light WITH None GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7ccc23ec-040c-4ae1-b2cf-ee4cd529e8fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:set_indicator_state\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_299_allocations_allocation_id_patch_reader [0.155806s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/2f1060ac-065c-476f-8200-aafe6b39af73 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-80bc5eae-827f-4bc2-90c8-a0e544ee5552 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_host_url [0.052465s] ... ok {2} ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id [0.103179s] ... ok {1} ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_public_endpoint [0.041981s] ... ok {1} ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_authenticated [0.063560s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2054628c-c94a-4566-bf18-cb865938a588 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_299_third_party_admin_cannot_set_indicator [0.183530s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/fe6095eb-c81c-448d-8b47-b7b226ac9910/management/indicators/component/magic_light WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c92bdcff-f557-421a-a85e-b0d7159abe06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fe6095eb-c81c-448d-8b47-b7b226ac9910 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_network.GetPortgroupByIdTestCase.test_portgroup_by_id_no_such_portgroup [0.090014s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_300_allocations_allocation_id_delete_admin [0.168725s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/4bd7478e-334e-4cf6-bb11-de30781190d2 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-2e2696c6-9ed9-4c3b-a8f6-b40cf0a5d6c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_not_authenticated [0.049510s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 401 Unauthorized Content-Type: application/json Www-Authenticate: Basic realm="Baremetal API" {"error":{"message":"Authorization required","code":401}} {1} ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_public_unauthenticated [0.048939s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-066a8510-397e-4929-b64e-a26c9fb0a520 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}} {2} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_cleaning [0.097546s] ... ok {1} ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_get_request [0.049388s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_300_owner_reader_can_list_portgroups [0.154274s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-36c9903c-ccf4-48e3-9b9a-7286d04768d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "address": "01:03:09:ff:01:01", "name": "magicfoo", "links": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "bookmark"}]}, {"uuid": "4e373e7d-e6b3-4179-a779-b085932b67f9", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/4e373e7d-e6b3-4179-a779-b085932b67f9", "rel": "self"}, {"href": "http://localhost/portgroups/4e373e7d-e6b3-4179-a779-b085932b67f9", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_options_request [0.048023s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_301_allocations_allocation_id_delete_member [0.158318s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/56697360-4e13-4a1e-aa3f-4fd944f1b15c GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-dd381a17-fcf8-4c12-986a-5e074d5a5a9f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_provisioning [0.085438s] ... ok {1} ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_get_request [0.060642s] ... ok {2} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_rescuing [0.088982s] ... ok {1} ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_options_request [0.049735s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_301_owner_service_can_list_portgroups [0.153196s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-839a8919-4e9b-4793-a4c5-228a31ee3282 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "address": "01:03:09:ff:01:01", "name": "magicfoo", "links": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "bookmark"}]}, {"uuid": "1ba74439-621c-4ebb-a84b-07a8a2fb129f", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/1ba74439-621c-4ebb-a84b-07a8a2fb129f", "rel": "self"}, {"href": "http://localhost/portgroups/1ba74439-621c-4ebb-a84b-07a8a2fb129f", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_302_allocations_allocation_id_delete_reader [0.145314s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/eca6edbf-059f-4cc7-bd4e-c2de927c2983 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-447b1a45-471d-4f01-993a-6439675c1450 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions [0.045414s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ foo() migrated 15 of 15 objects. {2} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_no_ports_no_portgroups [0.075502s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2 [0.046459s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 15 of 15 objects. func2() migrated 20 of 20 objects. {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_302_lessee_reader_can_list_portgroups [0.094059s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ec6d511d-6f12-41ba-8541-8139b20fb341 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "fdaf0737-79bc-4692-926d-d5eab195da37", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/fdaf0737-79bc-4692-926d-d5eab195da37", "rel": "self"}, {"href": "http://localhost/portgroups/fdaf0737-79bc-4692-926d-d5eab195da37", "rel": "bookmark"}]}]} {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_done [0.054596s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 10 of 10 objects. func2() migrated 0 of 0 objects. {2} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_port_int_info [0.090580s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_303_third_party_admin_cannot_list_portgroups [0.068840s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0761b48d-88fb-43cd-b17c-aa4a739360c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": []} {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_notdone [0.045403s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 10 of 15 objects. {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_onedone [0.047637s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 10 of 10 objects. {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_303_nodes_allocation_get_admin [0.213250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-441c5c9a-0417-4cbb-a0d6-9e98c337e3f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "fb9c1b36-da60-4fc4-87e2-e0ba4007a882", "created_at": "2025-11-11T18:58:54.065498+00:00", "updated_at": "2025-11-11T18:58:54.105459+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/fb9c1b36-da60-4fc4-87e2-e0ba4007a882", "rel": "self"}, {"href": "http://localhost/allocations/fb9c1b36-da60-4fc4-87e2-e0ba4007a882", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_portgroup_int_info [0.078940s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_304_owner_reader_can_read_portgroup [0.125252s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cec1ee78-1de6-4535-a37e-2a2c62818c36 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "created_at": "2025-11-11T18:58:54.191732+00:00", "updated_at": null, "address": "01:03:09:ff:01:01", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "magicfoo", "properties": {}, "standalone_ports_supported": true, "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "links": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc/ports", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_exception [0.058764s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ Error while running foo: bar. {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_none [0.039603s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_304_nodes_allocation_get_member [0.147465s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-82794f5a-3a1a-4786-b87f-c3771d25f62f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "3dbaf156-d533-4675-bc78-d54b12540f61", "created_at": "2025-11-11T18:58:54.276723+00:00", "updated_at": "2025-11-11T18:58:54.286898+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/3dbaf156-d533-4675-bc78-d54b12540f61", "rel": "self"}, {"href": "http://localhost/allocations/3dbaf156-d533-4675-bc78-d54b12540f61", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_portgroups_int_info [0.146173s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_two_calls_done [0.079873s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 10 of 10 objects. func1() migrated 0 of 0 objects. func2() migrated 0 of 0 objects. {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_305_lessee_reader_can_read_portgroup [0.189314s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/15f6f2ee-82e7-42f8-868a-e5c7af4ce3f2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03c5ad4c-3266-441e-8e35-86d4febcb108 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "15f6f2ee-82e7-42f8-868a-e5c7af4ce3f2", "created_at": "2025-11-11T18:58:54.377700+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "mode": "active-backup", "name": "fooname", "properties": {}, "standalone_ports_supported": true, "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "links": [{"href": "http://localhost/v1/portgroups/15f6f2ee-82e7-42f8-868a-e5c7af4ce3f2", "rel": "self"}, {"href": "http://localhost/portgroups/15f6f2ee-82e7-42f8-868a-e5c7af4ce3f2", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/15f6f2ee-82e7-42f8-868a-e5c7af4ce3f2/ports", "rel": "self"}, {"href": "http://localhost/portgroups/15f6f2ee-82e7-42f8-868a-e5c7af4ce3f2/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_305_nodes_allocation_get_reader [0.115096s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2432fbde-418c-499b-9683-ac3b247b46fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "85e1d83b-fd4c-4947-9b5e-acb4aa05260d", "created_at": "2025-11-11T18:58:54.410405+00:00", "updated_at": "2025-11-11T18:58:54.416102+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/85e1d83b-fd4c-4947-9b5e-acb4aa05260d", "rel": "self"}, {"href": "http://localhost/allocations/85e1d83b-fd4c-4947-9b5e-acb4aa05260d", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_ports_int_info [0.109300s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_306_nodes_allocation_delete_admin [0.112638s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-be99d6e5-c3e3-4878-881a-ce2ca9da11fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_network.TestNetwork.test_remove_vifs_from_node [0.138413s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_307_nodes_allocation_delete_member [0.075554s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7524a96e-9a66-4481-860b-8bb5f0e5d0b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_308_nodes_allocation_delete_reader [0.074197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-02c91313-3e69-45d3-bcea-7cf0223f6439 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations [0.367286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Running batches of 50 until migrations have been completed. Data migrations have completed. {2} ironic.tests.unit.common.test_network.TestRemoveVifsTestCase.test_remove_vifs_from_node_failure [0.139537s] ... ok {2} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_duplicate [0.043093s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_309_deploy_templates_post_admin [0.080334s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/deploy_templates/29d77e31-3d39-4ceb-813e-04ee72418562 Openstack-Request-Id: req-f2783901-7217-45fe-8443-83570d03d0eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "29d77e31-3d39-4ceb-813e-04ee72418562", "created_at": "2025-11-11T18:58:54.797844+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/29d77e31-3d39-4ceb-813e-04ee72418562", "rel": "self"}, {"href": "http://localhost/deploy_templates/29d77e31-3d39-4ceb-813e-04ee72418562", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_batches [0.077294s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Running batches of 50 until migrations have been completed. Data migrations have completed. {2} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_failure [0.040987s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_exception [0.051008s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Running batches of 50 until migrations have been completed. {2} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_missing [0.043345s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option1 [0.051131s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Malformed option m1key1=value1 {2} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_name [0.039160s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_310_deploy_templates_post_member [0.157591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9b95e768-6afc-4d14-8133-5f1a5ca204e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_uuid [0.033984s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option2 [0.050161s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Malformed option m1.key1value1 {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_306_third_party_admin_cannot_read_portgroup [0.559070s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cc79f0ba-35af-4263-9c8b-f7c0840db277 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_max_count_neg [0.057675s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ "max-count" must be a positive value. {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_notdone [0.046104s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Data migrations have not completed. Please re-run. {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_311_deploy_templates_post_reader [0.146521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b8827c66-4e15-4b61-b7b6-8c0a56faedad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_with_options [0.048065s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Running batches of 50 until migrations have been completed. Data migrations have completed. {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_307_owner_admin_can_add_portgroup [0.145882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/e6c4518d-96b9-4048-9cc2-a840364e14b4 Openstack-Request-Id: req-db7cc67c-1826-41e4-b9bb-b1aded0211dc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e6c4518d-96b9-4048-9cc2-a840364e14b4", "created_at": "2025-11-11T18:58:55.131827+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "links": [{"href": "http://localhost/v1/portgroups/e6c4518d-96b9-4048-9cc2-a840364e14b4", "rel": "self"}, {"href": "http://localhost/portgroups/e6c4518d-96b9-4048-9cc2-a840364e14b4", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/e6c4518d-96b9-4048-9cc2-a840364e14b4/ports", "rel": "self"}, {"href": "http://localhost/portgroups/e6c4518d-96b9-4048-9cc2-a840364e14b4/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkInterfaceMixin.test_get_network_names_and_uuids [0.214181s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions [0.058147s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address [0.042266s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_bad [0.071300s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_show_failed [0.034013s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_308_owner_service_can_add_portgroup [0.138584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/36f32715-6c5b-4423-a061-36bf45dc3ecd Openstack-Request-Id: req-352f8c35-555c-4f26-ae8d-b5e5b2ea0def X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "36f32715-6c5b-4423-a061-36bf45dc3ecd", "created_at": "2025-11-11T18:58:55.274236+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "links": [{"href": "http://localhost/v1/portgroups/36f32715-6c5b-4423-a061-36bf45dc3ecd", "rel": "self"}, {"href": "http://localhost/portgroups/36f32715-6c5b-4423-a061-36bf45dc3ecd", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/36f32715-6c5b-4423-a061-36bf45dc3ecd/ports", "rel": "self"}, {"href": "http://localhost/portgroups/36f32715-6c5b-4423-a061-36bf45dc3ecd/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_312_deploy_templates_get_admin [0.168189s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-64d1a094-2729-461b-9565-1e993cd53bde X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "1aaa8310-4f34-4fd7-bf69-1c9dc83cbabf", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/1aaa8310-4f34-4fd7-bf69-1c9dc83cbabf", "rel": "self"}, {"href": "http://localhost/deploy_templates/1aaa8310-4f34-4fd7-bf69-1c9dc83cbabf", "rel": "bookmark"}]}]} {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_unbind_port_failed [0.046210s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_ignore_models [0.074144s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_binding [0.049233s] ... ok {1} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_versions_bad [0.055646s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ This is bad {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_exception [0.045947s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_309_owner_manager_can_add_portgroup [0.137292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/portgroups/34ad1c07-dd89-49d7-a0ff-20cf4da64f9a Openstack-Request-Id: req-94217705-1794-4dbf-bd54-bbc8fa645d3c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "34ad1c07-dd89-49d7-a0ff-20cf4da64f9a", "created_at": "2025-11-11T18:58:55.415703+00:00", "updated_at": null, "address": null, "extra": {}, "internal_info": {}, "mode": "active-backup", "name": null, "properties": {}, "standalone_ports_supported": true, "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "links": [{"href": "http://localhost/v1/portgroups/34ad1c07-dd89-49d7-a0ff-20cf4da64f9a", "rel": "self"}, {"href": "http://localhost/portgroups/34ad1c07-dd89-49d7-a0ff-20cf4da64f9a", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/34ad1c07-dd89-49d7-a0ff-20cf4da64f9a/ports", "rel": "self"}, {"href": "http://localhost/portgroups/34ad1c07-dd89-49d7-a0ff-20cf4da64f9a/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum [0.047648s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_313_deploy_templates_get_member [0.160776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dd260a44-e0e1-48be-995e-9487b6caea2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "5e71b3ba-e753-4c4f-a68e-8f4743a59b34", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/5e71b3ba-e753-4c4f-a68e-8f4743a59b34", "rel": "self"}, {"href": "http://localhost/deploy_templates/5e71b3ba-e753-4c4f-a68e-8f4743a59b34", "rel": "bookmark"}]}]} {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_without_binding [0.047253s] ... ok {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_file_not_found [0.048935s] ... ok {2} ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_name [0.037529s] ... ok {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_hashlib_not_supports_algo [0.048593s] ... ok {2} ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_uuid [0.041844s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_310_owner_member_cannot_add_portgroup [0.138610s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1ff69913-5f69-44c8-8676-ce3fb8789d28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_mismatch [0.047566s] ... ok {2} ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_duplicate [0.038351s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_314_deploy_templates_get_reader [0.155558s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c199c89c-9f9b-4785-a031-e8ff719091fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"deploy_templates": [{"uuid": "4b242cbc-7325-4950-8475-72b488c133fb", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/4b242cbc-7325-4950-8475-72b488c133fb", "rel": "self"}, {"href": "http://localhost/deploy_templates/4b242cbc-7325-4950-8475-72b488c133fb", "rel": "bookmark"}]}]} {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_mixed_case [0.047354s] ... ok {2} ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_failure [0.027878s] ... ok {2} ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_not_found [0.037800s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_311_lessee_admin_cannot_add_portgroup [0.130631s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c4807782-d81b-42f0-b96d-67af1e9df461 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_mixed_case_delimited [0.055820s] ... ok {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_mixed_md5 [0.033075s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_315_deploy_templates_deploy_template_id_get_admin [0.152377s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/ea090e70-e71a-4568-9876-8b2aaea05fe7 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a3b520e9-0592-4a8b-8b66-7b970db7f4ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ea090e70-e71a-4568-9876-8b2aaea05fe7", "created_at": "2025-11-11T18:58:55.693388+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/ea090e70-e71a-4568-9876-8b2aaea05fe7", "rel": "self"}, {"href": "http://localhost/deploy_templates/ea090e70-e71a-4568-9876-8b2aaea05fe7", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipa_debug_rescue [0.085518s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_312_lessee_manager_cannot_add_portgroup [0.143590s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bf6eb27c-52d2-43e3-b31e-921ddfaa16bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes [0.118364s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_driver_info [0.088218s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_316_deploy_templates_deploy_template_id_get_member [0.165865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/b2dcf687-64c1-46e0-8764-6d501414ada4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0151b09b-598c-4fff-ad75-daed78b3cfd7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b2dcf687-64c1-46e0-8764-6d501414ada4", "created_at": "2025-11-11T18:58:55.856949+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/b2dcf687-64c1-46e0-8764-6d501414ada4", "rel": "self"}, {"href": "http://localhost/deploy_templates/b2dcf687-64c1-46e0-8764-6d501414ada4", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_instance_info [0.087365s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_record_failure [0.106146s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_313_lessee_member_cannot_add_portgroup [0.127717s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-97e2dd60-1b0c-4f2e-9e7c-c578f407011c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_with_default [0.095673s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_set_meta_failure [0.114243s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_317_deploy_templates_deploy_template_id_get_reader [0.153364s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/4ef538b7-8a3d-4aa7-8c3a-ca62b98b1fb6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e9e9b38c-a0a2-40d4-aca6-c290fde0b8bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4ef538b7-8a3d-4aa7-8c3a-ca62b98b1fb6", "created_at": "2025-11-11T18:58:56.020531+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4ef538b7-8a3d-4aa7-8c3a-ca62b98b1fb6", "rel": "self"}, {"href": "http://localhost/deploy_templates/4ef538b7-8a3d-4aa7-8c3a-ca62b98b1fb6", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_314_third_party_admin_cannot_add_portgroup [0.132551s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-82d5fa8b-bc45-4802-9f72-ae348ad40917 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe [0.074575s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_conn_init_failure [0.100694s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_ipa_debug [0.074230s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_315_owner_admin_can_modify_portgroup [0.134946s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-23e31430-13b0-48ec-aae0-13122df6835a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_initialize_connection_failure [0.094378s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_318_deploy_templates_deploy_template_id_patch_admin [0.189893s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/6cb30357-153d-4d2f-9dc2-f2dbdbc49890 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-14cc496e-4b89-4cf9-a821-c2504873669b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6cb30357-153d-4d2f-9dc2-f2dbdbc49890", "created_at": "2025-11-11T18:58:56.168245+00:00", "updated_at": "2025-11-11T18:58:56.266340+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/6cb30357-153d-4d2f-9dc2-f2dbdbc49890", "rel": "self"}, {"href": "http://localhost/deploy_templates/6cb30357-153d-4d2f-9dc2-f2dbdbc49890", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_local_boot [0.088432s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_one_attached [0.097758s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_no_kernel_no_ramdisk [0.062283s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_316_owner_manager_can_modify_portgroup [0.147805s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cf84b879-fa70-43b5-88fd-c40b98ecf2e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_319_deploy_templates_deploy_template_id_patch_member [0.148762s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/50590427-20d7-4329-a759-a84ab0626bbb WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-06a907d7-a178-4ac8-a7a6-adeaad88e73e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_opts_ramdisk_opt [0.079646s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_reserve_failure [0.103424s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_317_owner_member_cannot_modify_portgroup [0.133680s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e3df50ca-d0fe-4926-bebd-14bc0006590f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_rescue [0.089799s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_vol_not_found [0.103200s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_320_deploy_templates_deploy_template_id_patch_reader [0.155803s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/b5c15bdf-0f45-4a96-a87f-56a3b6eed47c WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dbfcc0e0-4892-462f-a650-b47b354ae3ee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_without_is_whole_disk_image [0.078861s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_318_lessee_admin_cannot_modify_portgroup [0.148250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/e82224f1-d0b0-4180-9a4d-b33f06327b30 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0e5207a6-b35a-4237-88ed-4a970d58c42e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes [0.102831s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_321_deploy_templates_deploy_template_id_delete_admin [0.157574s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/6e251327-e2bf-4c80-ab57-9a99c82d0fed GOT Response: 204 No Content Openstack-Request-Id: req-7f450a35-bce9-4859-a484-15189b481adc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_begin_detaching_failure [0.103553s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_319_lessee_manager_cannot_modify_portgroup [0.140968s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/2cbd5057-0950-4dc4-953c-065e8781bcdb WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2662d5fd-091e-45b6-a8eb-a0401c517760 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_conn_init_failure_bad_request [0.096720s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_322_deploy_templates_deploy_template_id_delete_member [0.149025s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/964ed407-0434-4c87-ac96-bf95cd214913 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e383effa-29e8-499e-91be-2d5d5942e1d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_320_lessee_member_cannot_modify_portgroup [0.139445s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/a7ac6a5d-ac12-43c2-b375-6554202485ea WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b1db79d1-1c86-4486-8e40-f327729d7421 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_allowed [0.103304s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_323_deploy_templates_deploy_template_id_delete_reader [0.141477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/f530070e-f30f-4c8f-9660-3345385c6666 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-462e05ef-3e7a-4ac9-9d67-9398094df8ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ramdisk_params [0.419732s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_not_allowed [0.099282s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_grub_mac_path [0.045395s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_321_third_party_admin_cannot_modify_portgroup [0.205286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/173418ae-f872-4217-bcd1-f637f26c9911 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f1b1391e-3b9f-4bae-81ca-fa28bee0bfdc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 173418ae-f872-4217-bcd1-f637f26c9911 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_ip_address_path [0.049467s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_meta_failure_errors_not_allowed [0.078574s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_324_chassis_post_admin [0.156972s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/00c4797d-fc37-4ae9-b3bd-58d3e38631d4 Openstack-Request-Id: req-2effe946-74cb-49ab-9edc-b28be397e37c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "00c4797d-fc37-4ae9-b3bd-58d3e38631d4", "created_at": "2025-11-11T18:58:57.191847+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/00c4797d-fc37-4ae9-b3bd-58d3e38631d4", "rel": "self"}, {"href": "http://localhost/chassis/00c4797d-fc37-4ae9-b3bd-58d3e38631d4", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/00c4797d-fc37-4ae9-b3bd-58d3e38631d4/nodes", "rel": "self"}, {"href": "http://localhost/chassis/00c4797d-fc37-4ae9-b3bd-58d3e38631d4/nodes", "rel": "bookmark"}]]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path [0.050608s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_one_detached [0.047475s] ... ok {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_term_failure [0.046230s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path_ipxe [0.042796s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_322_owner_admin_can_delete_portgroup [0.150177s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d4b3adca-f902-4143-9b19-b5421eb3b58e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_vol_not_found [0.081176s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__link_ip_address_pxe_configs [0.089182s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_325_chassis_post_member [0.179806s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4c58382f-d91e-4e2e-a6be-a57144cac5bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_supported [0.046017s] ... ok {1} ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_unsupported [0.050610s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_infiniband_mac_pxe_configs [0.093106s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_323_owner_manager_can_delete_portgroup [0.150450s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-0fbdcceb-848d-48d0-b9b7-48386bcbacd3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_ipxe_configs [0.094886s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_324_owner_member_cannot_delete_portgroup [0.147877s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-73e55496-8542-44ce-a769-cee180a6e0c0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_pxe_configs [0.104515s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: line 1: mkisofs: command not found {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2 ... SKIPPED: mkisofs not installed /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_325_owner_service_can_delete_portgroup [0.141751s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f62af09b-4e4f-43b0-b603-44d1b1332302 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config [0.097241s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_326_chassis_post_reader [0.401045s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-406ad46d-f6e8-4727-bf14-16820c9be55c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:create\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum [0.168427s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi [0.099259s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_326_lessee_admin_cannot_delete_portgroup [0.138185s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/ae6cd6e6-79b2-4a19-8734-ef1e0ebb6050 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-49efa0b7-e1ef-4b4a-893a-3966f0163ba7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_327_chassis_get_admin [0.116950s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a3deca5e-ae4e-4680-972b-870526a503f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: line 1: mkisofs: command not found {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_iso_9660 ... SKIPPED: mkisofs not installed {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_instance_info [0.096549s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: line 1: mkisofs: command not found {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_iso_udf ... SKIPPED: mkisofs not installed {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_328_chassis_get_member [0.140195s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f4d5633-62ea-4f36-a43b-aefe618bc712 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_327_lessee_manager_cannot_delete_portgroup [0.164506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/e0f9cfe1-f429-441a-a4a7-5fc2bc5abb37 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-91d54e96-9050-4fd1-a498-09f92b7e089d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_mac_address [0.102886s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_329_chassis_get_reader [0.084788s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2c781488-d3e0-46e9-8925-18943e43c315 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_no_ipaddress [0.096192s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script [0.057108s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_328_lessee_member_cannot_delete_portgroup [0.181376s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/16e5fe0a-aa7e-43c1-80f4-3b32f04cd28e GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ebd47271-d4b0-41b0-8974-dd2b0934e6c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_330_chassis_get_service [0.119878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b6bbfff-849e-478e-9913-a6ab7e3cb5ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}]}]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_already_exists [0.056660s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_copy_file_different [0.052344s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_331_chassis_detail_get_admin [0.109274s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-41eef6a8-d91e-45a4-ab94-7550a9e41041 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:58.331526+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_329_third_party_admin_cannot_delete_portgroup [0.145719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/e514d9ae-1eca-478f-b102-933de6dba3a2 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0377da7c-3df8-4244-bc23-d559ce07ce1c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup e514d9ae-1eca-478f-b102-933de6dba3a2 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_fallback [0.056549s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_332_chassis_detail_get_member [0.087209s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6c39a53a-d0f9-432e-972a-d56ea3cd99b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:58.427630+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config [0.089118s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_330_service_cannot_delete_portgroup [0.155283s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/cc9d2412-5eb6-452d-94da-74be33e283ea GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-80b57b74-184c-47c5-92d8-7d5513efb9fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup cc9d2412-5eb6-452d-94da-74be33e283ea could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_333_chassis_detail_get_reader [0.090467s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4b12d790-b45c-41d8-940c-3a49a0665c01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"chassis": [{"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:58.498405+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_bios [0.106087s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_334_chassis_chassis_id_get_admin [0.109680s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3efd0a5f-77ad-4119-b876-5c774c1ea795 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:58.604157+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_331_owner_reader_can_get_node_portgroups [0.149987s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f1511efa-3b3e-4d38-9a77-449f8695ee39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "address": "01:03:09:ff:01:01", "name": "magicfoo", "links": [{"href": "http://localhost/v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "self"}, {"href": "http://localhost/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc", "rel": "bookmark"}]}]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_uefi [0.090741s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_set_dir_permission [0.086606s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_335_chassis_chassis_id_get_member [0.130580s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9fd5db1a-10e4-4d1c-ae3f-6a0935fdb33c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:58.753752+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_332_lessee_reader_can_get_node_porgtroups [0.152197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-47fc9c54-9389-41de-806d-8579a64ebb2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": [{"uuid": "271f93e1-04ee-4ff3-800c-309fc687e071", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/271f93e1-04ee-4ff3-800c-309fc687e071", "rel": "self"}, {"href": "http://localhost/portgroups/271f93e1-04ee-4ff3-800c-309fc687e071", "rel": "bookmark"}]}]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_grub [0.077760s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_336_chassis_chassis_id_get_reader [0.105897s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d091ce90-b632-4409-878d-819f92864909 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:58.855709+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_333_third_party_admin_cannot_get_portgroups [0.088579s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-641afa2f-f9c7-4b34-afb1-eac67d59cddf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_ipxe [0.085204s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qcow2 [0.928939s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_334_service_cannot_get_portgroups [0.066560s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-66dc63ff-4956-470d-a2cd-cd1a8f7c41af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks [0.068914s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_mac_address [0.086076s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qcow2_invalid [0.043251s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_grub_config [0.062889s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_335_owner_reader_can_list_ports [0.109833s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1feec8f5-17ec-4f39-8c74-fff9d4634409 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "address": "00:00:00:00:00:01", "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}]}, {"uuid": "21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "address": "00:00:00:00:00:02", "links": [{"href": "http://localhost/v1/ports/21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "rel": "self"}, {"href": "http://localhost/ports/21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "rel": "bookmark"}]}, {"uuid": "e7ed9e57-2b1d-4dda-9e1c-900d2baf3688", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/e7ed9e57-2b1d-4dda-9e1c-900d2baf3688", "rel": "self"}, {"href": "http://localhost/ports/e7ed9e57-2b1d-4dda-9e1c-900d2baf3688", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_337_chassis_chassis_id_patch_admin [0.200709s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-74e70cd0-9bb3-4670-b58e-3400889216b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:59.034347+00:00", "updated_at": "2025-11-11T18:58:59.099342+00:00", "description": "meow", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_anaconda [0.062377s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_iso [0.074213s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_336_owner_service_can_list_ports [0.147717s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-34863523-2b53-47a8-b304-d7e2a77130e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "address": "00:00:00:00:00:01", "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}]}, {"uuid": "21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "address": "00:00:00:00:00:02", "links": [{"href": "http://localhost/v1/ports/21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "rel": "self"}, {"href": "http://localhost/ports/21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "rel": "bookmark"}]}, {"uuid": "8fbe4d4f-8cf9-4e80-aa46-addfab548692", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/8fbe4d4f-8cf9-4e80-aa46-addfab548692", "rel": "self"}, {"href": "http://localhost/ports/8fbe4d4f-8cf9-4e80-aa46-addfab548692", "rel": "bookmark"}]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_338_chassis_chassis_id_patch_member [0.146464s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-49eb6c4f-ce3a-4f82-b597-4dc9b4cc0e33 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "created_at": "2025-11-11T18:58:59.196470+00:00", "updated_at": "2025-11-11T18:58:59.256835+00:00", "description": "meow", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes", "rel": "bookmark"}]]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_ramdisk [0.074950s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config [0.062638s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_339_chassis_chassis_id_patch_reader [0.169963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1ed4f1db-240f-4573-9b70-f51710f2fd7b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:update\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_337_lessee_reader_can_list_ports [0.167631s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d018a81e-a13c-41b5-b374-c74a87e69a2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "d5be5d5c-87aa-4382-981c-ae05dfddc095", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/d5be5d5c-87aa-4382-981c-ae05dfddc095", "rel": "self"}, {"href": "http://localhost/ports/d5be5d5c-87aa-4382-981c-ae05dfddc095", "rel": "bookmark"}]}]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_multipath [0.082863s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks [0.420266s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_no_extra_volumes [0.054069s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_script [0.045110s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_338_third_party_admin_cannot_list_ports [0.148437s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-597cfec1-4187-4f17-ac96-696024653e01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe ... SKIPPED: qemu-img not installed or does not support qed format {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_340_chassis_chassis_id_delete_admin [0.175557s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 204 No Content Openstack-Request-Id: req-e9c91231-824e-449d-912e-f1af7d7bc41a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_config [0.067177s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_timeout_config [0.063977s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_pxe_config [0.048378s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_341_chassis_chassis_id_delete_member [0.176786s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9052dcb0-86f3-4749-b31d-2cd273c2157d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance [0.087565s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_bios [0.065817s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_342_chassis_chassis_id_delete_reader [0.158921s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ddd895f9-6821-47b4-a88c-18af3f086227 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_http_ipv4 [0.079567s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_http_ipv6 [0.077131s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_343_chassis_chassis_id_delete_service [0.156764s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-85cfe47a-6ea9-4deb-9d29-67d9e3a3b262 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:chassis:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_http_ipxe_ipv4 [0.073641s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_http_ipxe_ipv6 [0.074406s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6 [0.067937s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_344_node_history_get_admin [0.175316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-25b9197f-78a9-4c20-b7c9-1c3462de3334 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "a5dd48c9-7007-4c5f-8d79-b49fbe925433", "created_at": "2025-11-11T18:59:00.207633+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/a5dd48c9-7007-4c5f-8d79-b49fbe925433", "rel": "self"}]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vdi [0.723710s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6_bios [0.084768s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vdi_invalid [0.044569s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_fallback_ipxe_boot_script [0.054926s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_339_owner_reader_can_read_port [0.846474s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a2cbb402-9ee8-4fc1-b245-ce8a9a707222 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "created_at": "2025-11-11T18:59:00.347890+00:00", "updated_at": null, "address": "00:00:00:00:00:01", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "name": null, "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_345_node_history_get_member [0.158421s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0f13193a-10a0-4ff6-be02-078d230f690d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "c8a74711-9f29-4be8-8b4d-9b54b2056358", "created_at": "2025-11-11T18:59:00.387649+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c8a74711-9f29-4be8-8b4d-9b54b2056358", "rel": "self"}]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info [0.049570s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_bad_driver_info [0.042438s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_ipxe [0.033569s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_pxe_config_file_path [0.038164s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_340_owner_service_can_read_port [0.152729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c47f10ed-8aa7-4e66-8336-bcbf94c68dc7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "created_at": "2025-11-11T18:59:00.507552+00:00", "updated_at": null, "address": "00:00:00:00:00:01", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "name": null, "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_346_node_history_get_reader [0.157521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ea772a65-8503-4d0d-936a-47a926bc2e64 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "ac8246ff-8f79-48ae-a6fb-142088e8fc4d", "created_at": "2025-11-11T18:59:00.550036+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/ac8246ff-8f79-48ae-a6fb-142088e8fc4d", "rel": "self"}]}]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info [0.024935s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info_ipxe [0.035102s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_link_mac_pxe_configs_with_pxe_disabled [0.057291s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config [0.033807s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config_existing_dirs [0.042516s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_347_node_history_get_service [0.187943s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-76af1f0d-b756-45f0-b9c5-e398b0d83a36 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "55943cec-1df7-4a3d-bf15-2aaea4adf027", "created_at": "2025-11-11T18:59:00.710967+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/55943cec-1df7-4a3d-bf15-2aaea4adf027", "rel": "self"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_341_lessee_reader_can_read_port [0.211455s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/b8a6fb1f-bf12-4245-b015-e09212395950 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d9de0159-d8c5-4aef-85dc-8724d0bf5b2b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b8a6fb1f-bf12-4245-b015-e09212395950", "created_at": "2025-11-11T18:59:00.672061+00:00", "updated_at": null, "address": "52:54:00:cf:2d:31", "extra": {}, "internal_info": {"bar": "buzz"}, "is_smartnic": false, "local_link_connection": {"switch_id": "0a:1b:2c:3d:4e:5f", "port_id": "Ethernet3/1", "switch_info": "switch1"}, "physical_network": null, "pxe_enabled": true, "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f", "name": null, "links": [{"href": "http://localhost/v1/ports/b8a6fb1f-bf12-4245-b015-e09212395950", "rel": "self"}, {"href": "http://localhost/ports/b8a6fb1f-bf12-4245-b015-e09212395950", "rel": "bookmark"}], "portgroup_uuid": null} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_pxe_config_aarch64 [0.051862s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_pxe_config_x86_64 [0.077842s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_348_node_history_get_entry_admin [0.138384s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/b4ef3410-939c-4ac1-9caf-f9cc806ed123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2068115-c89e-41c9-acde-0641f5337f4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b4ef3410-939c-4ac1-9caf-f9cc806ed123", "created_at": "2025-11-11T18:59:00.888382+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/b4ef3410-939c-4ac1-9caf-f9cc806ed123", "rel": "self"}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_342_third_party_admin_cannot_read_port [0.161300s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/abfd8dbb-1732-449a-b760-2224035c6b99 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8d05834b-c59f-4ebe-acc6-a875c5cc3e1f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port abfd8dbb-1732-449a-b760-2224035c6b99 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_349_node_history_get_entry_member [0.137347s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/ce218e3d-540d-4dc8-81de-a5b5c73751a7 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2f7d6d58-122a-440a-8a1e-eeafbdc3c237 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ce218e3d-540d-4dc8-81de-a5b5c73751a7", "created_at": "2025-11-11T18:59:01.020611+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/ce218e3d-540d-4dc8-81de-a5b5c73751a7", "rel": "self"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_343_owner_admin_can_add_ports [0.151946s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'address': '00:01:02:03:04:05'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-dcb08482-4865-407a-b698-d2d5a220b8a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vhd [0.779002s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vhd_invalid [0.068729s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_350_node_history_get_entry_reader [0.180356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/a63eeea7-bc85-43e9-a26b-ef7eeabeaf74 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-400623b4-dfa9-4a4b-8830-ce148cf48d17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a63eeea7-bc85-43e9-a26b-ef7eeabeaf74", "created_at": "2025-11-11T18:59:01.191782+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/a63eeea7-bc85-43e9-a26b-ef7eeabeaf74", "rel": "self"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_344_owner_manager_can_add_ports [0.175339s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'address': '00:01:02:03:04:05'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ec9ffee9-2230-4c51-9d1b-978d391651ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vhdx_invalid [0.069704s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_default_noop [0.404506s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_no_source [0.053536s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_raises_exception_with_absolute_path [0.047470s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_351_node_inventory_get_admin [0.170561s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/inventory WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-928fa894-b64c-4d59-8200-5fe12c3c4957 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"inventory": {"inventory": "test"}, "plugin_data": {"pdata": {"plugin": "data"}}} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_345_owner_admin_cannot_add_ports_to_other_nodes [0.150936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '573208e5-cd41-4e26-8f06-ef44022b3793', 'address': '09:01:02:03:04:09'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-356c78b8-82b4-46ca-a1d0-bf80f2564d78 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files [0.051373s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_chmod [0.051549s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_copy [0.049001s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_352_node_inventory_get_reader [0.140403s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/inventory WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6855434c-c6cf-4ed8-aac1-73d3a609ba30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"inventory": {"inventory": "test"}, "plugin_data": {"pdata": {"plugin": "data"}}} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_346_owner_manager_cannot_add_ports_to_other_nodes [0.147912s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '573208e5-cd41-4e26-8f06-ef44022b3793', 'address': '09:01:02:03:04:09'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-db8fee5e-fb34-46f2-80e5-c2af14c6ee5d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_relative_path [0.051291s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image [0.043142s] ... ok {2} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_flags [0.042095s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_347_owner_service_cannot_add_ports_to_other_nodes [0.159964s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '573208e5-cd41-4e26-8f06-ef44022b3793', 'address': '09:01:02:03:04:09'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ab0b9b14-ae7f-4c85-be19-3d729bf98a8b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails [0.049803s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_retries [0.047838s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_353_node_history_get_entry_service [0.239375s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/f09ebb68-5fd8-483c-a9cd-2732f137cd78 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-adfcd1bb-2d1c-4ce5-89f6-1e16ce5f1d6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f09ebb68-5fd8-483c-a9cd-2732f137cd78", "created_at": "2025-11-11T18:59:01.713503+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/f09ebb68-5fd8-483c-a9cd-2732f137cd78", "rel": "self"}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error [0.045830s] ... ok {2} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails [0.022776s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config [0.023742s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_empty_target_raid_config [0.028932s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_no_target_raid_config_after_skipping [0.038140s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_nonroot [0.030344s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_348_owner_member_cannot_add_port [0.242634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7095023e-24b0-4c5d-9833-40c218637fc3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_354_shard_get_shards [0.152579s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fd331e5f-5669-4207-b81e-815466d0ac69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"shards": [{"name": "None", "count": 3}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_root [0.044285s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties [0.025408s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties_custom_schema [0.047459s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_multiple_root_volumes [0.032688s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay [0.037005s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_current_capabilities_empty [0.041239s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_349_lessee_admin_cannot_add_port [0.222841s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-687f4bf9-9ca7-418e-a46a-5b4c58d2a953 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_355_shard_patch_set_node_shard [0.263567s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/shard', 'value': 'TestShard'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7f91f1df-eaa1-4c42-9253-b6bef5fa6f71 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_no_root_volumes [0.077595s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_350_lessee_manager_cannot_add_port [0.164723s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d9df2dbc-5c83-48a8-887c-ff7e75a344da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_skip_MAX [0.129672s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities [0.053542s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_356_shard_patch_set_node_shard_disallowed [0.240907s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/shard', 'value': 'TestShard'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d02ad951-028e-4101-8420-669950aad8c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:shard\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_add_to_existing_capabilities [0.040177s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_capabilities_not_dict [0.024701s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_351_lessee_member_cannot_add_port [0.152371s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8800c5a1-099c-48a2-83ff-c12563e83708 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk [1.268224s] ... ok {2} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_invalid_capabilities [0.040093s] ... ok {2} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_multiple_keys [0.026825s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_replace_to_existing_capabilities [0.040178s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_352_third_party_admin_cannot_add_port [0.151080s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-00dd7950-0fb1-461d-ae20-ce1e4fba81e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} 5+0 records in 5+0 records out 5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0400346 s, 131 MB/s /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port [0.065691s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_357_parent_node_patch_by_admin [0.275449s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/parent_node', 'value': '22e26c0b-03f2-4d2e-ae87-c02d7f33c000'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cbc5ae13-f45a-406e-a15b-5a234f318c8f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port_fail [0.063459s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_353_service_can_add_port [0.144730s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'address': '00:01:02:03:04:05'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f70dd904-5787-4a6a-95bd-9b08898d9c6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_file [0.079639s] ... ok {2} ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_string [0.069084s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_354_service_cannot_add_ports_to_other_project [0.140341s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fb44a89a-310a-40d0-a48f-2c95cc08773e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_358_parent_node_patch_by_member [0.222155s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/parent_node', 'value': '22e26c0b-03f2-4d2e-ae87-c02d7f33c000'}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-de405347-ef5e-46cc-a058-aad598dc1ff2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_with_quotes [0.090523s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_359_parent_node_patch_by_reader [0.096780s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/parent_node', 'value': '22e26c0b-03f2-4d2e-ae87-c02d7f33c000'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fdd037d1-09e3-4152-bbf6-74d4c750b039 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:parent_node\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_correct_setting [0.077793s] ... ok {2} ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default [0.116226s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_360_nodes_firmware_component_get_admin [0.136989s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/firmware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-26c10728-6aa2-44b3-9856-0b3609fee0ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"firmware": [{"created_at": "2025-11-11T18:59:03.208218+00:00", "updated_at": null, "component": "bmc", "initial_version": "v1.0.0", "current_version": "v1.0.0", "last_version_flashed": null}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_355_owner_admin_can_modify_port [0.263927s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-fe3f2431-11cb-4355-bec9-e09b691fbe9a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_default_limit [0.098713s] ... ok {2} ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_negative_setting [0.105942s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_361_nodes_firmware_component_get_member [0.256816s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/firmware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e7de9f3-dba3-48b5-b522-5ce52fd001e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"firmware": [{"created_at": "2025-11-11T18:59:03.399108+00:00", "updated_at": null, "component": "bmc", "initial_version": "v1.0.0", "current_version": "v1.0.0", "last_version_flashed": null}]} {2} ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_zero_setting [0.201725s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_356_owner_manager_can_modify_port [0.386653s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-2565945f-60e3-4900-b686-456b53320560 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_wsgi_service_with_ssl_enabled [0.095840s] ... ok {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_name_match_first [0.125774s] ... ok {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_candidates_do_not_match [0.105729s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_357_owner_service_can_modify_port [0.377480s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4acd603f-0fda-4bcb-8360-8b94685c91bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_changed_after_lock [0.210837s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_358_owner_member_cannot_modify_port [0.241009s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6214b7b7-42d9-436e-8abc-ed9f008c65fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out [0.106987s] ... ok {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out_project [0.070784s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_362_nodes_firmware_component_get_reader [0.938475s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/firmware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-50ec1615-32e6-4c56-b8be-36312e745288 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"firmware": [{"created_at": "2025-11-11T18:59:04.365533+00:00", "updated_at": null, "component": "bmc", "initial_version": "v1.0.0", "current_version": "v1.0.0", "last_version_flashed": null}]} {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_locked [0.081985s] ... ok {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_success [0.055179s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_359_lessee_admin_cannot_modify_port [0.257910s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/7462454a-47e2-4688-9d3e-7858f4e7175b WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fdb9f85f-4575-4869-bcfc-55c9e0f63d4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_candidates [0.102867s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_363_runbooks_post_admin [0.194412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/9fadd91d-3bfb-4b94-a6fc-195ea8fe43ed Openstack-Request-Id: req-840cf67b-39a6-47e9-a0ee-b720ac918095 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9fadd91d-3bfb-4b94-a6fc-195ea8fe43ed", "created_at": "2025-11-11T18:59:04.637861+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/9fadd91d-3bfb-4b94-a6fc-195ea8fe43ed", "rel": "self"}, {"href": "http://localhost/runbooks/9fadd91d-3bfb-4b94-a6fc-195ea8fe43ed", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_360_lessee_manager_cannot_modify_port [0.158303s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/3006c680-37fb-46ed-8ec4-0c3c1518ea28 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b08f6e6e-2aaa-4862-a36c-dbc90e1d205f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_traits [0.103626s] ... ok {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_conductor_shutdown_flag [0.080546s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_364_runbooks_post_member [0.151930s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/e27f296a-12be-4ba3-91e5-768c9b598891 Openstack-Request-Id: req-f2945662-ca55-44e8-b994-7d91db5607e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e27f296a-12be-4ba3-91e5-768c9b598891", "created_at": "2025-11-11T18:59:04.791334+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/e27f296a-12be-4ba3-91e5-768c9b598891", "rel": "self"}, {"href": "http://localhost/runbooks/e27f296a-12be-4ba3-91e5-768c9b598891", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_361_lessee_member_cannot_modify_port [0.140417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/b714b8b5-86b3-42fe-8cc2-eae5a0d90548 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-18eac46d-0fd3-4f0f-933e-e3031f34d27e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_waits_on_workerpool [0.071276s] ... ok {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_with_mdns [0.071474s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_365_runbooks_post_reader [0.151832s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0ea5b208-d22c-4fd2-9044-572efac98bfe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:create\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_362_third_party_admin_cannot_modify_port [0.156471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/080a7284-eb12-4f8e-be6a-9b30abd29469 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6e178577-0380-4fe1-8ec5-4e0e5feeb4e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 080a7284-eb12-4f8e-be6a-9b30abd29469 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_prevent_double_start [0.092955s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_366_runbooks_get_admin [0.139261s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-609e7a68-2d3d-4a24-a673-334fd927fcfb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "ab47d478-02b3-4c05-85ab-f79f5714786b", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/ab47d478-02b3-4c05-85ab-f79f5714786b", "rel": "self"}, {"href": "http://localhost/runbooks/ab47d478-02b3-4c05-85ab-f79f5714786b", "rel": "bookmark"}]}]} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_clears_conductor_locks [0.090331s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_363_owner_admin_can_delete_port [0.162842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d14b6577-fced-4c81-9405-82292a82a56a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_dbapi_single_call [0.067501s] ... ok {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_hw_type_register [0.039648s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_367_runbooks_get_member [0.142387s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b6769c47-6b80-4c7f-9b97-b56fe8c8673b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "da75abc0-a29c-4139-b4e1-862073485fbc", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/da75abc0-a29c-4139-b4e1-862073485fbc", "rel": "self"}, {"href": "http://localhost/runbooks/da75abc0-a29c-4139-b4e1-862073485fbc", "rel": "bookmark"}]}]} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_hw_types [0.034462s] ... ok {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_missing_driver [0.032462s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_364_owner_manager_can_delete_port [0.152853s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-caf734b0-bb04-43dc-8bc9-ac1dba98ab73 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_368_runbooks_get_reader [0.137799s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bbd17ca3-7a98-4452-b8bc-8c48cfc85c1a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "59a2680f-9a4d-429a-b553-85f8d1f4191a", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/59a2680f-9a4d-429a-b553-85f8d1f4191a", "rel": "self"}, {"href": "http://localhost/runbooks/59a2680f-9a4d-429a-b553-85f8d1f4191a", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_365_owner_service_can_delete_port [0.084641s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7ce468cb-f7da-420c-aba6-85ebed3f0094 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_366_owner_member_cannot_delete_port [0.082914s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-334fb966-983a-435f-9302-57ca8b1084f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_369_runbooks_runbook_id_get_admin [0.127294s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/b5cfefe9-e569-4b63-8b93-a9199e7f0bc0 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e6b3358c-a1b5-45b1-a5db-4d87fc45659d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b5cfefe9-e569-4b63-8b93-a9199e7f0bc0", "created_at": "2025-11-11T18:59:05.509764+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/b5cfefe9-e569-4b63-8b93-a9199e7f0bc0", "rel": "self"}, {"href": "http://localhost/runbooks/b5cfefe9-e569-4b63-8b93-a9199e7f0bc0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_recover_nodes_stuck [0.235278s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_367_lessee_admin_cannot_delete_port [0.069435s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/2fe08e38-2176-4f2d-a3d1-a362c777966f GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-45d258be-5703-4b0e-b354-9a6f5807c163 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_370_runbooks_runbook_id_get_member [0.096815s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/07ae3674-aaa2-4521-bb0f-a126c341cd01 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a4020e89-18dd-45a1-8c99-da1b448584c2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "07ae3674-aaa2-4521-bb0f-a126c341cd01", "created_at": "2025-11-11T18:59:05.612496+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/07ae3674-aaa2-4521-bb0f-a126c341cd01", "rel": "self"}, {"href": "http://localhost/runbooks/07ae3674-aaa2-4521-bb0f-a126c341cd01", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_368_lessee_manager_cannot_delete_port [0.077656s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/5371ef67-a073-4029-bab3-249c8298c028 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e54e120c-ecf4-4ea9-a7b2-8cdb4dba794a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_371_runbooks_runbook_id_get_reader [0.084131s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/17461ae4-0475-4e7a-9b16-2d88adb209cf WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6cb022c0-a949-4115-92ec-68c867940eb2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "17461ae4-0475-4e7a-9b16-2d88adb209cf", "created_at": "2025-11-11T18:59:05.695113+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/17461ae4-0475-4e7a-9b16-2d88adb209cf", "rel": "self"}, {"href": "http://localhost/runbooks/17461ae4-0475-4e7a-9b16-2d88adb209cf", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_369_lessee_member_cannot_delete_port [0.115031s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/90a6ed40-5efe-43c3-a4e1-223680859ff7 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-521402f2-1e8d-465b-9577-e5924e4aab81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_372_runbooks_runbook_id_patch_admin [0.141216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/53822495-8428-48b2-8190-766de39b3634 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f488b156-bdbb-4f9f-bd4d-7dbe3db2b0ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "53822495-8428-48b2-8190-766de39b3634", "created_at": "2025-11-11T18:59:05.792286+00:00", "updated_at": "2025-11-11T18:59:05.846413+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/53822495-8428-48b2-8190-766de39b3634", "rel": "self"}, {"href": "http://localhost/runbooks/53822495-8428-48b2-8190-766de39b3634", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_conductor [0.327526s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_370_third_party_admin_cannot_delete_port [0.089037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/d70be616-b69f-4619-a600-f671d7557f29 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f31a67a0-41d4-407d-a728-995ea9d17a6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port d70be616-b69f-4619-a600-f671d7557f29 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_371_owner_reader_can_get_node_ports [0.103254s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e9dae629-c978-487a-bc32-7a6ecb78bd26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "address": "00:00:00:00:00:01", "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}]}, {"uuid": "21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "address": "00:00:00:00:00:02", "links": [{"href": "http://localhost/v1/ports/21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "rel": "self"}, {"href": "http://localhost/ports/21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_373_runbooks_runbook_id_patch_member [0.141392s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/6ba435be-da85-4b84-9665-355ca7fd3fcb WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-229505ad-c0fe-47d8-b9db-55f1eed07c6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6ba435be-da85-4b84-9665-355ca7fd3fcb", "created_at": "2025-11-11T18:59:05.939757+00:00", "updated_at": "2025-11-11T18:59:05.988170+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/6ba435be-da85-4b84-9665-355ca7fd3fcb", "rel": "self"}, {"href": "http://localhost/runbooks/6ba435be-da85-4b84-9665-355ca7fd3fcb", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_names [0.154021s] ... ok {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_specific_tasks [0.063852s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_374_runbooks_runbook_id_patch_reader [0.145312s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/5a81464f-b5ae-4df1-acbc-1ff5684af1a2 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8105ad27-2d1f-4144-b990-774f8a7f34dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_json_rpc [0.062368s] ... ok {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_json_rpc_port [0.056778s] ... ok {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns [0.075050s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit [3.716538s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_375_runbooks_runbook_id_patch_public_admin [0.167273s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/f1f0a380-635b-4d20-ab39-7ed7e176bdbb WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b44ec4cb-f28e-4eb5-8bfc-f55cdcb45477 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f1f0a380-635b-4d20-ab39-7ed7e176bdbb", "created_at": "2025-11-11T18:59:06.241881+00:00", "updated_at": "2025-11-11T18:59:06.289724+00:00", "name": "CUSTOM_DT1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/f1f0a380-635b-4d20-ab39-7ed7e176bdbb", "rel": "self"}, {"href": "http://localhost/runbooks/f1f0a380-635b-4d20-ab39-7ed7e176bdbb", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_372_owner_service_can_get_node_ports [0.318577s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-75c2376e-c9c0-450b-af88-894fbec5f881 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "ebe30f19-358d-41e1-8d28-fd7357a0164c", "address": "00:00:00:00:00:01", "links": [{"href": "http://localhost/v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "self"}, {"href": "http://localhost/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c", "rel": "bookmark"}]}, {"uuid": "21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "address": "00:00:00:00:00:02", "links": [{"href": "http://localhost/v1/ports/21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "rel": "self"}, {"href": "http://localhost/ports/21a3c5a7-1e14-44dc-a9dd-0c84d5477a57", "rel": "bookmark"}]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns_and_debug [0.066068s] ... ok 5+0 records in 5+0 records out 5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.023879 s, 220 MB/s {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_373_lessee_reader_can_get_node_port [0.069751s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-59f1f157-579b-4d32-ac8c-050bbced6358 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": [{"uuid": "93a6846e-d059-4558-8e6c-1bf41334237d", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/93a6846e-d059-4558-8e6c-1bf41334237d", "rel": "self"}, {"href": "http://localhost/ports/93a6846e-d059-4558-8e6c-1bf41334237d", "rel": "bookmark"}]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_no_enabled_interfaces [0.060657s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_376_runbooks_runbook_id_patch_public_member [0.156855s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/1213f9cf-3ae9-45c1-a712-fe78c93631b3 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7464e4aa-7143-4adb-a80f-a8af6b84aa89 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1213f9cf-3ae9-45c1-a712-fe78c93631b3", "created_at": "2025-11-11T18:59:06.420163+00:00", "updated_at": "2025-11-11T18:59:06.458313+00:00", "name": "CUSTOM_DT1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/1213f9cf-3ae9-45c1-a712-fe78c93631b3", "rel": "self"}, {"href": "http://localhost/runbooks/1213f9cf-3ae9-45c1-a712-fe78c93631b3", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_374_third_party_admin_cannot_get_ports [0.084849s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ad0bf1b1-6798-4158-b9d5-048113337bbf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_without_jsonrpc_port_pined_version [0.070722s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_375_service_cannot_get_ports [0.074604s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3379e673-0d92-4e74-ad47-f6455ac9c354 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_clears_conductor_locks [0.086810s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_377_runbooks_runbook_id_patch_public_reader [0.138024s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/9985d108-84db-4fbc-b078-db4fe57d8a77 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a1b40256-9d15-4a1e-ac89-0dbfadf4e96d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:public\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_376_owner_reader_can_get_ports_by_portgroup [0.074257s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-375397dd-2606-4588-9d08-031b7f1ab71a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_doesnt_unregister_conductor [0.070774s] ... ok {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_uninitialized_conductor [0.062487s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_378_runbooks_runbook_id_patch_owner_admin [0.119999s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/57650e02-0b7f-4398-848a-ec2a36db422e WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fcaf5119-ce17-4d2c-9d21-526796646bdc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "57650e02-0b7f-4398-848a-ec2a36db422e", "created_at": "2025-11-11T18:59:06.671490+00:00", "updated_at": "2025-11-11T18:59:06.713146+00:00", "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "new_owner", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/57650e02-0b7f-4398-848a-ec2a36db422e", "rel": "self"}, {"href": "http://localhost/runbooks/57650e02-0b7f-4398-848a-ec2a36db422e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_377_owner_service_cam_get_ports_by_portgroup [0.112709s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2eda7f96-0bbf-44f8-b0d6-bd04ccf4fbf2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_379_runbooks_runbook_id_patch_owner_member [0.097819s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/fec2bcf2-2fc4-455b-a26d-807d0ce12ef0 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ca9863bf-a26b-4947-8f05-5d83efaaa207 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "fec2bcf2-2fc4-455b-a26d-807d0ce12ef0", "created_at": "2025-11-11T18:59:06.777473+00:00", "updated_at": "2025-11-11T18:59:06.817171+00:00", "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "new_owner", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/fec2bcf2-2fc4-455b-a26d-807d0ce12ef0", "rel": "self"}, {"href": "http://localhost/runbooks/fec2bcf2-2fc4-455b-a26d-807d0ce12ef0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_unregisters_conductor [0.131937s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_378_lessee_reader_can_get_ports_by_portgroup [0.129586s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/bf070060-ad71-4df4-b7da-f8dfc1e878c5/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f0f51b7b-7a34-40d8-9880-ec0b9bb59331 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"ports": []} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_380_runbooks_runbook_id_patch_owner_reader [0.073819s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/85106f72-db96-4508-8a68-90f347b53dd3 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-56c3ab3b-c9d4-4571-8508-bb0fe7f6f958 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:owner\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_379_third_party_admin_cannot_get_ports_by_portgroup [0.073260s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/5810f41c-6585-41fc-b9c9-a94f50d421b5/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-694731c1-3a9c-4bc1-afa4-0687db5de899 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 5810f41c-6585-41fc-b9c9-a94f50d421b5 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_warning_on_low_workers_pool [0.126902s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_381_runbooks_runbook_id_delete_admin [0.084052s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/9f1be39a-ef34-4df3-8f4b-c7ca81fca718 GOT Response: 204 No Content Openstack-Request-Id: req-d718805d-b271-4b33-bbd7-4ce0c7041562 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_bad_step_return_value [0.071313s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_380_service_cannot_get_ports_by_portgroup [0.112371s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/5810f41c-6585-41fc-b9c9-a94f50d421b5/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6fd97459-3be3-4198-bf16-c427585021df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 5810f41c-6585-41fc-b9c9-a94f50d421b5 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_382_runbooks_runbook_id_delete_member [0.091098s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/200a4a50-44f4-45c9-ac08-9473f34061a0 GOT Response: 204 No Content Openstack-Request-Id: req-f83cdc5c-f593-47b3-8ba9-83850d9b2f27 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_execute_fail [0.095055s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_383_runbooks_runbook_id_delete_reader [0.137414s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/bedbb68b-0fce-443c-bb8d-6c148980fade GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-07e5fc6a-3d36-4dc6-a874-d9bf0aa5bb3e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:delete\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_381_owner_reader_can_list_volume_connectors [0.151359s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-40744581-5e1a-48e9-a6d0-fcb9413db6db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "65ea0296-219b-4635-b0c8-a6e055da878d", "connector_id": "iqn.2012-06.org.openstack.magic", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/65ea0296-219b-4635-b0c8-a6e055da878d", "rel": "self"}, {"href": "http://localhost/volume/connectors/65ea0296-219b-4635-b0c8-a6e055da878d", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"}, {"uuid": "a03bb6f2-d937-4da0-af5b-23b229bad3b9", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/a03bb6f2-d937-4da0-af5b-23b229bad3b9", "rel": "self"}, {"href": "http://localhost/volume/connectors/a03bb6f2-d937-4da0-af5b-23b229bad3b9", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_fail_in_tear_down_cleaning [0.190320s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_382_lessee_reader_can_list_volume_connectors [0.102261s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d5be3e0f-86c9-4d53-83a4-3c170885d4eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "69384f2a-17f4-4c81-b554-162838d12af9", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/69384f2a-17f4-4c81-b554-162838d12af9", "rel": "self"}, {"href": "http://localhost/volume/connectors/69384f2a-17f4-4c81-b554-162838d12af9", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_384_runbooks_post_project_admin [0.164945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/0c7047ab-1b8d-4991-936d-dde1026727f2 Openstack-Request-Id: req-e7ea5da8-b11b-4922-aca1-a98c1995774f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0c7047ab-1b8d-4991-936d-dde1026727f2", "created_at": "2025-11-11T18:59:07.373097+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/0c7047ab-1b8d-4991-936d-dde1026727f2", "rel": "self"}, {"href": "http://localhost/runbooks/0c7047ab-1b8d-4991-936d-dde1026727f2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_383_third_party_admin_cannot_get_connector_list [0.078103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f751206-32eb-4007-b810-343bc5c877c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": []} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_last_step_noop [0.119815s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_384_owner_admin_can_post_volume_connector [0.077533s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/7d145196-0784-442d-8ff4-85d78afcd9e3 Openstack-Request-Id: req-32c81ab6-1244-481b-9b5f-07238054580d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7d145196-0784-442d-8ff4-85d78afcd9e3", "created_at": "2025-11-11T18:59:07.479647+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/7d145196-0784-442d-8ff4-85d78afcd9e3", "rel": "self"}, {"href": "http://localhost/volume/connectors/7d145196-0784-442d-8ff4-85d78afcd9e3", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {3} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_385_public_runbooks_post_admin [0.150929s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'public': True, 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/dbc962f8-76e6-42c7-93c8-cf501b5f45fe Openstack-Request-Id: req-046d3796-2fff-4d74-b200-d4c7c0c00da4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "dbc962f8-76e6-42c7-93c8-cf501b5f45fe", "created_at": "2025-11-11T18:59:07.525121+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/dbc962f8-76e6-42c7-93c8-cf501b5f45fe", "rel": "self"}, {"href": "http://localhost/runbooks/dbc962f8-76e6-42c7-93c8-cf501b5f45fe", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {3} ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_get_arg [0.040239s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_385_owner_manager_can_post_volume_connector [0.090967s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/196a098c-8989-400f-9c3f-3a9d4a60b450 Openstack-Request-Id: req-26612fa8-470f-4935-bce2-de8234074fbb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "196a098c-8989-400f-9c3f-3a9d4a60b450", "created_at": "2025-11-11T18:59:07.575091+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/196a098c-8989-400f-9c3f-3a9d4a60b450", "rel": "self"}, {"href": "http://localhost/volume/connectors/196a098c-8989-400f-9c3f-3a9d4a60b450", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_no_steps [0.158742s] ... ok {3} ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_set_arg_types [0.045647s] ... ok {3} ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_signature [0.037437s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_386_owner_service_can_post_volume_connector [0.085632s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/connectors/20fa1831-06d6-4b72-9cb1-65f002614343 Openstack-Request-Id: req-44867641-dc51-4aa1-bbc9-355f7c5e36d8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20fa1831-06d6-4b72-9cb1-65f002614343", "created_at": "2025-11-11T18:59:07.662157+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/20fa1831-06d6-4b72-9cb1-65f002614343", "rel": "self"}, {"href": "http://localhost/volume/connectors/20fa1831-06d6-4b72-9cb1-65f002614343", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_fast_track [0.093143s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_last_step_noop_fast_track [0.059565s] ... ok {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_add_request_id [0.092345s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_387_lessee_admin_cannot_post_volume_connector [0.086899s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8dd509bf-7ed0-4702-bff7-51d574427c98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_miss_context [0.068745s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/bad/path WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_bad_step_return_value [0.076156s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_388_lessee_manager_cannot_post_volume_connector [0.086415s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9995f82e-c5b5-4d43-89b6-3a2506812e6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_auth_token_info [0.054139s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_execute_fail [0.056896s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_389_third_party_admin_cannot_post_volume_connector [0.073896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5b6bc23d-2c1d-4ff5-9265-84d8eee971e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_noauth_token_removed [0.066418s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_fail_in_tear_down_cleaning [0.102938s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_390_service_admin_cannot_post_volume_connector [0.071772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-02ba7157-baa2-4329-95dd-f0822728424e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_not_admin [0.063181s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_last_step_noop [0.057782s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_391_owner_reader_can_get_volume_connector [0.082426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/168b16ee-8ec0-4194-9f82-689d5e863cb3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9e576bee-04f9-49f6-b45e-c3c756fcd9f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "168b16ee-8ec0-4194-9f82-689d5e863cb3", "created_at": "2025-11-11T18:59:08.045099+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/168b16ee-8ec0-4194-9f82-689d5e863cb3", "rel": "self"}, {"href": "http://localhost/volume/connectors/168b16ee-8ec0-4194-9f82-689d5e863cb3", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_public_api [0.084702s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_no_steps [0.101192s] ... ok {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_exception_success [0.066201s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-90f5a08b-f42a-4213-9728-c091a48fda6b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_392_lessee_reader_can_get_volume_connector [0.107363s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/001bed95-a75a-42a5-8893-da2524f4a906 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-af4f872b-938e-4bf4-97d6-090b83947fed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "001bed95-a75a-42a5-8893-da2524f4a906", "created_at": "2025-11-11T18:59:08.150064+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/001bed95-a75a-42a5-8893-da2524f4a906", "rel": "self"}, {"href": "http://localhost/volume/connectors/001bed95-a75a-42a5-8893-da2524f4a906", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault [0.039412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5dc02b78-4268-410d-8beb-05e6c5fb938d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\":\"Client\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_retired_last_step_change_tgt_state [0.080232s] ... ok {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug [0.059521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a555d30a-4b08-4d4a-ad94-1833b9364066 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\":\"Client\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated [0.060721s] ... ok {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug_tracebacks [0.044475s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-144496a6-1ecb-4f7d-bb06-94d25748bc7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Test exception message.\\nTraceback (most recent call last):\\n File \\\"/opt/stack/ironic/ironic/common/rpc/amqp.py\\\", line 434, in _process_data\\\\n **args)\\n File \\\"/opt/stack/ironic/ironic/common/rpc/dispatcher.py\\\", line 172, in dispatch\\\\n result = getattr(proxyobj, method)(ctxt, **kwargs)\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_393_third_party_admin_cannot_get_volume_connector [0.118338s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/975f2670-1b45-4cd4-bbaa-eba4eca35408 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4ce47253-54c4-4634-9429-616af5190098 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 975f2670-1b45-4cd4-bbaa-eba4eca35408 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios [0.062192s] ... ok {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault [0.046882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-14986d90-c708-446a-a3ba-d595438dbe93 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_394_lessee_member_cannot_patch_volume_connectors [0.080316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/e03bdeed-49e7-4465-834f-89a216cd033e WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-67a06d86-3378-41a6-b11e-66c2284d5d58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug [0.065839s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-734f1493-cb7f-4f50-a06d-216071e1d9b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Test exception message.\",\"debuginfo\":null}"} {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug_tracebacks [0.033511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ade62a24-8626-44cc-82b6-30c5411b0c99 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Test exception message.\\nTraceback (most recent call last):\\n File \\\"/opt/stack/ironic/ironic/common/rpc/amqp.py\\\", line 434, in _process_data\\\\n **args)\\n File \\\"/opt/stack/ironic/ironic/common/rpc/dispatcher.py\\\", line 172, in dispatch\\\\n result = getattr(proxyobj, method)(ctxt, **kwargs)\", \"debuginfo\": \"Traceback (most recent call last):\\n\\n File \\\"/builddir/build/BUILD/ironic-26.1.5.dev2/ironic/api/method.py\\\", line 42, in callfunction\\n result = f(self, *args, **kwargs)\\n\\n File \\\"/builddir/build/BUILD/ironic-26.1.5.dev2/ironic/api/controllers/root.py\\\", line 44, in index\\n return root()\\n\\n File \\\"\\\", line 3, in root\\n\\n File \\\"/usr/lib64/python3.9/unittest/mock.py\\\", line 1092, in __call__\\n return self._mock_call(*args, **kwargs)\\n\\n File \\\"/usr/lib64/python3.9/unittest/mock.py\\\", line 1096, in _mock_call\\n return self._execute_mock_call(*args, **kwargs)\\n\\n File \\\"/usr/lib64/python3.9/unittest/mock.py\\\", line 1151, in _execute_mock_call\\n raise effect\\n\\nException: Test exception message.\\nTraceback (most recent call last):\\n File \\\"/opt/stack/ironic/ironic/common/rpc/amqp.py\\\", line 434, in _process_data\\\\n **args)\\n File \\\"/opt/stack/ironic/ironic/common/rpc/dispatcher.py\\\", line 172, in dispatch\\\\n result = getattr(proxyobj, method)(ctxt, **kwargs)\\n\"}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_395_owner_admin_can_patch_volume_connectors [0.076205s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/d95d371e-ed17-404f-9099-6d0793f58f8f WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c3d7439c-2706-4576-8d81-eb655e030ab7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_remote_error_success [0.044506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e7ea7ba6-d5ae-4523-94d2-c47b467988d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\":\"Server\",\"faultstring\":\"Remote error: TestException Test exception message.\\n['\",\"debuginfo\":null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_396_owner_manager_can_patch_volume_connectors [0.085309s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/509b3327-fbc3-40be-93cf-d860c8271da4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3e5356d2-9e88-4381-a11f-96c74152abca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_exception [0.276690s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_397_lessee_admin_cannot_patch_volume_connectors [0.091493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/138f67ff-8647-4abc-bbb1-8220a17f2287 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c9e068b8-7020-47cd-a232-96a2925e5a98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_unsupported [0.084150s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_398_lessee_manager_can_patch_volume_connectors [0.100164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/1a0715ff-bc27-42be-b35e-eeae259b346a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f1c8696a-ddb9-49b6-9637-9d67f8eb357d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled [0.072969s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_399_owner_member_can_patch_volume_connectors [0.072335s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/bbc58a0b-32f3-4a23-8253-607dd6686e99 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a258c785-8810-4b81-9105-521b5f1f8e60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_disabled [0.060078s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_400_third_party_admin_cannot_patch_volume_connectors [0.084381s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/70a5b30d-3a0a-4b72-9ef4-083c4fdfeb4a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4b6b1f93-ce70-479f-bf36-6ed78aebd929 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 70a5b30d-3a0a-4b72-9ef4-083c4fdfeb4a could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_enabled [0.121613s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_401_owner_admin_can_delete_volume_connectors [0.068496s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/26129caf-7cf9-46ca-a94b-84121cdf350c GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a05d3a1f-9d8f-43d2-b9e0-2221b8d6d414 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_402_owner_manager_can_delete_volume_connectors [0.067725s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/780f7253-e264-4793-9119-864275e0a54e GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c27bd058-07f9-4f3e-8317-bcae329cf7f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback [0.571566s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c3f37955-a61b-4dc0-9647-ebd5cb50d9f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug [0.026257s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-1621d6b4-386b-4f0b-be63-d325639c4194 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled [0.152349s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_403_owner_service_can_delete_volume_connectors [0.079153s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/e8356dfd-71f5-44e8-9218-f3206e8104ef GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ae9ede59-03ef-445d-bccb-c129b69af06d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug_tracebacks [0.050026s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-2c9c1752-7b03-4028-ad9e-769b60a15612 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Error message without traceback \\n but \\n multiline\", \"debuginfo\": \"Traceback (most recent call last):\\n\\n File \\\"/builddir/build/BUILD/ironic-26.1.5.dev2/ironic/api/method.py\\\", line 42, in callfunction\\n result = f(self, *args, **kwargs)\\n\\n File \\\"/builddir/build/BUILD/ironic-26.1.5.dev2/ironic/api/controllers/root.py\\\", line 44, in index\\n return root()\\n\\n File \\\"\\\", line 3, in root\\n\\n File \\\"/usr/lib64/python3.9/unittest/mock.py\\\", line 1092, in __call__\\n return self._mock_call(*args, **kwargs)\\n\\n File \\\"/usr/lib64/python3.9/unittest/mock.py\\\", line 1096, in _mock_call\\n return self._execute_mock_call(*args, **kwargs)\\n\\n File \\\"/usr/lib64/python3.9/unittest/mock.py\\\", line 1151, in _execute_mock_call\\n raise effect\\n\\nException: Error message without traceback \\n but \\n multiline\\n\"}"} {3} ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_disabled [0.027182s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd42d641-2428-4451-bcad-8f77be9ab85c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "OpenStack Ironic API", "description": "Ironic is an OpenStack project which enables the provision and management of baremetal machines.", "default_version": {"id": "v1", "links": [{"href": "http://spam.ham/eggs/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "versions": [{"id": "v1", "links": [{"href": "http://spam.ham/eggs/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}]} {3} ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_enabled [0.024735s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cc604a12-937d-4a86-b5d8-eee82b475fca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "OpenStack Ironic API", "description": "Ironic is an OpenStack project which enables the provision and management of baremetal machines.", "default_version": {"id": "v1", "links": [{"href": "https://mycloud.com/ironic/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "versions": [{"id": "v1", "links": [{"href": "https://mycloud.com/ironic/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}]} {3} ironic.tests.unit.api.test_root.TestRoot.test_get_root [0.023976s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e92167a7-fa2d-4f4f-a83a-5f409ca2c184 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"name": "OpenStack Ironic API", "description": "Ironic is an OpenStack project which enables the provision and management of baremetal machines.", "default_version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "versions": [{"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}]} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_disabled [0.113767s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_404_lessee_admin_can_delete_volume_connectors [0.101446s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/e4cbda09-b57e-4119-8c6d-cd36ff814a4a GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c2731658-20b7-464f-bd99-408d421a1538 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors [0.040646s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/foo WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {3} ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors2 [0.035032s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ GOT Response: 405 Method Not Allowed Content-Type: application/json Openstack-Request-Id: req-0d6fc4bc-1ead-49a8-a5e7-94ad7d316a1d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"The server could not comply with the request since it is either malformed or otherwise incorrect.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_22_root [0.025238s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ac87667c-2c03-4604-8769-e7ff673abe61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.22 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "lookup": [{"href": "http://localhost/v1/lookup/", "rel": "self"}, {"href": "http://localhost/lookup/", "rel": "bookmark"}], "heartbeat": [{"href": "http://localhost/v1/heartbeat/", "rel": "self"}, {"href": "http://localhost/heartbeat/", "rel": "bookmark"}]} {3} ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_23_root [0.024309s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-963705f1-7496-4c56-9df3-fc6d21ca403c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.23 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "portgroups": [{"href": "http://localhost/v1/portgroups/", "rel": "self"}, {"href": "http://localhost/portgroups/", "rel": "bookmark"}], "lookup": [{"href": "http://localhost/v1/lookup/", "rel": "self"}, {"href": "http://localhost/lookup/", "rel": "bookmark"}], "heartbeat": [{"href": "http://localhost/v1/heartbeat/", "rel": "self"}, {"href": "http://localhost/heartbeat/", "rel": "bookmark"}]} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_enabled [0.154823s] ... ok {3} ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_32_root [0.041434s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f31cac4-80ad-4d0f-b8c2-d3fd62dd2085 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.32 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}, "portgroups": [{"href": "http://localhost/v1/portgroups/", "rel": "self"}, {"href": "http://localhost/portgroups/", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/volume/", "rel": "self"}, {"href": "http://localhost/volume/", "rel": "bookmark"}], "lookup": [{"href": "http://localhost/v1/lookup/", "rel": "self"}, {"href": "http://localhost/lookup/", "rel": "bookmark"}], "heartbeat": [{"href": "http://localhost/v1/heartbeat/", "rel": "self"}, {"href": "http://localhost/heartbeat/", "rel": "bookmark"}]} {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized [3.149882s] ... ok {3} ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_root [0.040178s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-580bf364-b877-45f7-8988-1a07cceb1787 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}, {"href": "https://docs.openstack.org//ironic/latest/contributor//webapi.html", "rel": "describedby", "type": "text/html"}], "media_types": {"base": "application/json", "type": "application/vnd.openstack.ironic.v1+json"}, "chassis": [{"href": "http://localhost/v1/chassis/", "rel": "self"}, {"href": "http://localhost/chassis/", "rel": "bookmark"}], "nodes": [{"href": "http://localhost/v1/nodes/", "rel": "self"}, {"href": "http://localhost/nodes/", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/ports/", "rel": "self"}, {"href": "http://localhost/ports/", "rel": "bookmark"}], "drivers": [{"href": "http://localhost/v1/drivers/", "rel": "self"}, {"href": "http://localhost/drivers/", "rel": "bookmark"}], "version": {"id": "v1", "links": [{"href": "http://localhost/v1/", "rel": "self"}], "status": "CURRENT", "min_version": "1.1", "version": "1.93"}} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_defaults [0.026806s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_none [0.100157s] ... ok {3} ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_produces_a_warning [0.037167s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_offset [0.089502s] ... ok {3} ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_random_no_zeros [0.041308s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_zeros [0.035406s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_405_lessee_manager_can_delete_volume_connectors [0.336980s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/7296e3f3-982e-43a4-9d47-b606f14ad6ea GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a474c0a4-137a-4f98-bdbf-8f8bb24f02ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_network_validate_fail [0.127293s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_offset_stream_optimized [0.125382s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.DbSyncTestCase.test_upgrade_and_version [0.064900s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Context impl SQLiteImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_invalid [0.047995s] ... ok {3} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_allocations_table_latin1 [0.055085s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_power_validate_fail [0.131807s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_406_third_party_admin_cannot_delete_volume_connector [0.139065s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/fcf5a687-f5c4-4d80-ab02-3e2b2d73a89e GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-641babe3-4bd6-4b49-a1bb-16c131e9f21d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector fcf5a687-f5c4-4d80-ab02-3e2b2d73a89e could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_allocations_table_myiasm [0.082683s] ... ok {3} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_allocations_table_myiasm_both [0.052437s] ... ok {3} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_allocations_table_ok [0.029291s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_fail [0.146666s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_407_service_cannot_delete_volume_connector [0.141891s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/ae3a11b1-8edf-4eee-9ef1-152b97b0527f GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-27f39072-500c-4e78-b0fc-22c33236fe99 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector ae3a11b1-8edf-4eee-9ef1-152b97b0527f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_wait [0.068423s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_408_owner_reader_can_get_targets [0.133468s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c493a9e8-cc7a-408b-b58b-94a74c6cf731 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "a265e2f0-e97f-4177-b1c0-8298add53086", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/a265e2f0-e97f-4177-b1c0-8298add53086", "rel": "self"}, {"href": "http://localhost/volume/targets/a265e2f0-e97f-4177-b1c0-8298add53086", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"}, {"uuid": "a8e3f596-4a20-47eb-a7e9-a1dcff7320c7", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/a8e3f596-4a20-47eb-a7e9-a1dcff7320c7", "rel": "self"}, {"href": "http://localhost/volume/targets/a8e3f596-4a20-47eb-a7e9-a1dcff7320c7", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_steps_fail [0.092604s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_maintenance [0.060478s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_invalid_type [0.432113s] ... ok {3} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions [0.260630s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_409_lesse_reader_can_get_targets [0.096358s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9d6d8deb-d23a-4c98-854b-6833bea7d316 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "1e4e3a5f-e66d-4c1c-8bfd-6bc84f88d14b", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1e4e3a5f-e66d-4c1c-8bfd-6bc84f88d14b", "rel": "self"}, {"href": "http://localhost/volume/targets/1e4e3a5f-e66d-4c1c-8bfd-6bc84f88d14b", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual [0.057289s] ... ok {3} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions_bad [0.046983s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_410_third_party_admin_cannot_get_target_list [0.072202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-06738e28-2dee-46c1-984a-57531c5ac2b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": []} {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_and [0.040191s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_boolean [0.026573s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios [0.076015s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_411_owner_reader_can_get_volume_target [0.073658s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/686624b9-8157-430b-8ef3-26021a169a9c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6d85092a-b46e-44c8-9f71-44abceeb1d94 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "686624b9-8157-430b-8ef3-26021a169a9c", "created_at": "2025-11-11T18:59:10.250941+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"redacted_contents": "** Value redacted: Requires permission baremetal:volume:view_target_properties access. Permission denied. **"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/686624b9-8157-430b-8ef3-26021a169a9c", "rel": "self"}, {"href": "http://localhost/volume/targets/686624b9-8157-430b-8ef3-26021a169a9c", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args [0.028117s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args_kwargs [0.026449s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_exception [0.056416s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_function [0.018484s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_kwargs [0.027707s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_412_lessee_reader_can_get_volume_target [0.093486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/05f5a875-0e18-4d74-815e-9faef2f5b9b1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-431bcc68-e4d0-464e-8509-5e2e10bf9fda X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "05f5a875-0e18-4d74-815e-9faef2f5b9b1", "created_at": "2025-11-11T18:59:10.330023+00:00", "updated_at": null, "boot_index": 0, "extra": {}, "properties": {"redacted_contents": "** Value redacted: Requires permission baremetal:volume:view_target_properties access. Permission denied. **"}, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/05f5a875-0e18-4d74-815e-9faef2f5b9b1", "rel": "self"}, {"href": "http://localhost/volume/targets/05f5a875-0e18-4d74-815e-9faef2f5b9b1", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_integer [0.020460s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_unsupported [0.071823s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mac_address [0.019893s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mandatory [0.019563s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mixed_unvalidated [0.019446s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_413_third_party_admin_cannot_get_volume_target [0.068649s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/4e46fff3-63e7-4eb7-944d-e5ab18dc529a WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b78073ab-ce35-41cc-b410-3a047954ed1a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 4e46fff3-63e7-4eb7-944d-e5ab18dc529a could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_name [0.020591s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_disable_ramdisk [0.082241s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_or [0.022288s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string [0.021492s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string_list [0.020381s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_unexpected_args [0.019712s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_414_owner_admin_create_volume_target [0.103391s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/f9c2410b-9de5-4e25-bc2d-8de01563eead Openstack-Request-Id: req-480d7adf-e761-456f-bbdd-fd933b063da5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f9c2410b-9de5-4e25-bc2d-8de01563eead", "created_at": "2025-11-11T18:59:10.540165+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/f9c2410b-9de5-4e25-bc2d-8de01563eead", "rel": "self"}, {"href": "http://localhost/volume/targets/f9c2410b-9de5-4e25-bc2d-8de01563eead", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_network_validate_fail [0.089391s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid [0.018695s] ... ok {3} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid_or_name [0.021163s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch [0.022935s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_power_validate_fail [0.067492s] ... ok {3} ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch_validation_failed [0.038656s] ... ok {3} ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context [0.024452s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_415_owner_service_create_volume_target [0.136870s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/e9badba0-8c38-4c82-9692-81e8141dee00 Openstack-Request-Id: req-e1577a37-f6fa-4aa4-bb9e-13641577adbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e9badba0-8c38-4c82-9692-81e8141dee00", "created_at": "2025-11-11T18:59:10.667947+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/e9badba0-8c38-4c82-9692-81e8141dee00", "rel": "self"}, {"href": "http://localhost/volume/targets/e9badba0-8c38-4c82-9692-81e8141dee00", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {3} ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context_with_environ [0.020123s] ... ok {3} ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict [0.018839s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_fail [0.092008s] ... ok {3} ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict_older_api_server [0.019778s] ... ok {3} ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_with_context [0.026682s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_416_owner_manager_create_volume_target [0.080072s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'volume_type': 'iscsi', 'boot_index': 3, 'volume_id': 'test-id'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/d8ef7d92-51f4-4c33-9c7a-2c2a5fb04942 Openstack-Request-Id: req-a5c57d5f-83e3-4fa4-bd1e-6427d9e12967 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d8ef7d92-51f4-4c33-9c7a-2c2a5fb04942", "created_at": "2025-11-11T18:59:10.757851+00:00", "updated_at": null, "boot_index": 3, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/d8ef7d92-51f4-4c33-9c7a-2c2a5fb04942", "rel": "self"}, {"href": "http://localhost/volume/targets/d8ef7d92-51f4-4c33-9c7a-2c2a5fb04942", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_wait [0.054940s] ... ok {3} ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_without_context [0.021752s] ... ok {3} ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_dict_get_auth_token_info [0.020111s] ... ok {3} ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_policy_values [0.025289s] ... ok {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_fallback [0.022888s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_steps_fail [0.098270s] ... ok {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername [0.022132s] ... ok {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername_node [0.027183s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_417_lessee_admin_create_volume_target [0.136312s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id2'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/920aac05-88fc-4746-a101-9e1de46693ac Openstack-Request-Id: req-4b5f92cd-ecec-473a-a0f7-e58633a18da6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "920aac05-88fc-4746-a101-9e1de46693ac", "created_at": "2025-11-11T18:59:10.891064+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/920aac05-88fc-4746-a101-9e1de46693ac", "rel": "self"}, {"href": "http://localhost/volume/targets/920aac05-88fc-4746-a101-9e1de46693ac", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_one [0.022995s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_network_error_fail [0.064073s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_two [0.024097s] ... ok {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_unsupported [0.029841s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean [0.047713s] ... ok {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_check_exception_IncompatibleInterface [0.036365s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_418_lessee_manager_create_volume_target [0.123615s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id3'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/volume/targets/8723794e-5070-45e2-9a77-be3944559ecf Openstack-Request-Id: req-654b8cf2-0f83-44fa-bcc7-ea8b9a10004a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8723794e-5070-45e2-9a77-be3944559ecf", "created_at": "2025-11-11T18:59:11.004997+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id3", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/8723794e-5070-45e2-9a77-be3944559ecf", "rel": "self"}, {"href": "http://localhost/volume/targets/8723794e-5070-45e2-9a77-be3944559ecf", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_additional_defaults [0.021739s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean_no_skip_step [0.064739s] ... ok {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_config [0.021071s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_stream_optimized [0.936438s] ... ok {3} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_network_from_additional_defaults_hardware_type [0.020682s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_agent_busy [0.060737s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_config [0.044145s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_419_third_party_admin_cannot_create_volume_target [0.096074s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', 'volume_type': 'iscsi', 'boot_index': 2, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4ef24c66-04aa-45a6-87e9-6a1c9748df6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task [0.065726s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_endpoint_less_than_download_delay [0.057109s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_bad_default [0.034796s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_all [0.077841s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_multiple_containers [0.041277s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_calculated_defaults [0.038185s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_420_owner_member_can_patch_volume_target [0.089021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/dbcb727f-6941-43fb-ba8f-89a4f6d947bb WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-af9fb70b-7ef4-4870-b187-1c88ef308b61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_first_step_async [0.051926s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_configured_defaults [0.046580s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_no_key_no_exception [0.056566s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fake [0.036265s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_421_owner_service_can_patch_volume_target [0.084635s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/51572791-83f0-4562-991d-652f00054e6c WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-85ed478e-f778-423a-bd4a-91c8da8bfdd6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_collect_logs [0.082682s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fallback_defaults [0.041388s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url [0.080791s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_continue_from_last_cleaning [0.062920s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_incorrect [0.058693s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_422_lessee_admin_can_patch_volume_target [0.102465s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/c3997497-5976-4356-b8f6-3aae2e997e0b WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d664e728-4e5f-4306-ba4f-18aa8ffe0236 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected [0.080093s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_handles_hold_from_active [0.054974s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_instance_info_override [0.046114s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_not_fake [0.036107s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix [0.063091s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_423_lessee_manager_can_patch_volume_target [0.096058s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/f27138b2-764a-44c6-90e8-faab749616ca WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-2afcc56f-60b7-4c22-aa91-8828694c39b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_handles_hold_from_wait [0.077854s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces [0.042620s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix_underscore [0.041640s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces_non_default [0.049844s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_existing [0.021562s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all [0.082199s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_424_lessee_member_cannot_patch_volume_target [0.094452s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/89bf3a48-9690-44c6-b21f-3d32e8c64eef WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e5e53fd1-9fb3-4502-845d-0be1ec9ded35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_detected [0.086721s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_with_suffix [0.060530s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_425_third_party_admin_cannot_patch_volume_target [0.122803s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/2db91cae-6283-44ea-8c86-70eb34361b53 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-10d5eb63-84a5-40fb-85d2-fcdb54637fa8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 2db91cae-6283-44ea-8c86-70eb34361b53 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all_disable_ramdisk [0.130171s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_invalid_image_info [0.078815s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_key_detected [0.076560s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_missing [0.252157s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_rescue_interface [0.023834s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_426_service_cannot_patch_volume_target [0.171590s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/fc57f6d8-8761-4de5-824b-bc024e6ba2f6 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-82d1cbe1-061b-409b-b1c0-e1de4c9ccc48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target fc57f6d8-8761-4de5-824b-bc024e6ba2f6 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_storage_interface [0.033983s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_raid_interface_no_default [0.032411s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_multiple_containers [0.102828s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_rescue_interface_default_from_conf [0.041925s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_427_owner_admin_can_delete_volume_target [0.106836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/ad843e7c-9574-4c04-8875-efca16d07523 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8679bb97-4ebf-40a7-82d1-8f5808b190a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface [0.027165s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_continue_from_last_cleaning [0.301418s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface_default_from_conf [0.025819s] ... ok {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_no_key_detected [0.113862s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_none_storage_interface [0.032325s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_first_step_async [0.074432s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_428_owner_manager_can_delete_volume_target [0.101801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/37d991e5-d93e-4182-bb44-36c00733d7fb GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-24fabca6-daa2-40be-973a-99f16ad7ea4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_url_bad_no_info [0.075317s] ... ok {3} ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task [0.070321s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot [0.081603s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_file_image_service [0.061937s] ... ok {3} ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_default_is_flat [0.077822s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service [0.037724s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_fail [0.067020s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service_url [0.029959s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_429_lessee_admin_can_delete_volume_target [0.160713s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/78e014a4-6be1-4e14-9a13-14385ed24da4 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-19315cce-264d-4884-8c0a-cd6496511a04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_http_image_service [0.022445s] ... ok {3} ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_unknown_network_interface [0.075918s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_https_image_service [0.026582s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_last_step [0.076593s] ... ok {3} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_capture_region [0.041693s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_image_service_invalid_image_ref [0.022999s] ... ok {1} ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port [0.028862s] ... ok {3} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_get_inspector [0.038543s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_430_lessee_manager_can_delete_volume_target [0.105698s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/72d18fd3-57f2-4409-91ba-e8a07277cd23 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-0cf9d0b5-dd30-49fb-9a01-1a596febc3ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_client [0.023954s] ... ok {3} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like [0.033101s] ... ok {2} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_node_clean_steps_fail_poweroff [0.089162s] ... ok {3} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error [0.040567s] ... ok {1} ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_exception [0.063570s] ... ok {2} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive [0.039768s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_431_owner_member_cannot_delete_volume_target [0.096464s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/0431053c-0122-4805-ad35-dc2b57f400a6 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8787f80d-e841-4341-88d5-7aeee342a5fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_nova.TestNovaAdapter.test_get_nova_adapter [0.036196s] ... ok {3} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like [0.062448s] ... ok {1} ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_access_forbidden [0.041124s] ... ok {2} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift [0.075257s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_432_lessee_member_cannot_delete_volume_target [0.076676s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/ec659dc0-9410-436d-b6da-ad4e33a08a18 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fd9670ab-1c82-46d1-91d4-86eed01c4a39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error [0.054201s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSerializer.test_serialize [0.000122s] ... ok {1} ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_passes [0.045542s] ... ok {2} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_build [0.065684s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_is_glance_image [0.039799s] ... ok {1} ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_policy_not_registered [0.029806s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_433_third_party_admin_cannot_delete_volume_target [0.077453s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/b2e7f1fc-6e71-4c0e-876a-5a3fe2337ce6 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e8d5af30-692a-431f-a91b-ebf419bbdb04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target b2e7f1fc-6e71-4c0e-876a-5a3fe2337ce6 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_fail [0.043821s] ... ok {1} ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_config_file [0.055877s] ... ok {2} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout [0.065968s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance [0.043720s] ... ok {2} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout_fallback [0.045727s] ... ok {1} ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_namespace [0.057854s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance_fail [0.037066s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_434_service_cannot_delete_volume_target [0.106149s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/63bfe400-3b28-4df7-9170-3e2dd7f3d7a3 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8160e16c-3afc-432b-a8da-9c535a8b089e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 63bfe400-3b28-4df7-9170-3e2dd7f3d7a3 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_no_args [0.041714s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_uuid [0.040297s] ... ok {2} ironic.tests.unit.conductor.test_inspection.TestContinueInspection.test_failure [0.061930s] ... ok {3} ironic.tests.unit.common.test_image_publisher.SwiftPublisherTestCase.test__append_filename_param_with_filename [0.042778s] ... ok {2} ironic.tests.unit.conductor.test_inspection.TestContinueInspection.test_ok [0.050067s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.CleanUpPxeEnvTestCase.test__clean_up_pxe_env [0.067755s] ... ok {3} ironic.tests.unit.common.test_image_publisher.SwiftPublisherTestCase.test__append_filename_param_with_qs [0.028217s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_435_owner_reader_can_get_volume_connectors [0.120532s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e90aa02d-17e7-4d1b-a6e3-d60189ebf32b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "65ea0296-219b-4635-b0c8-a6e055da878d", "connector_id": "iqn.2012-06.org.openstack.magic", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/65ea0296-219b-4635-b0c8-a6e055da878d", "rel": "self"}, {"href": "http://localhost/volume/connectors/65ea0296-219b-4635-b0c8-a6e055da878d", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"}]} {3} ironic.tests.unit.common.test_image_publisher.SwiftPublisherTestCase.test__append_filename_param_without_qs [0.033771s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe [0.050679s] ... ok {2} ironic.tests.unit.conductor.test_inspection.TestContinueInspection.test_ok_asynchronous [0.070870s] ... ok {3} ironic.tests.unit.common.test_image_publisher.SwiftPublisherTestCase.test_publish [0.045405s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_insecure_heartbeat [0.073313s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_436_owner_service_can_get_volume_connectors [0.105793s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cf7cb3bd-464f-495a-845f-43bc8a864830 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "65ea0296-219b-4635-b0c8-a6e055da878d", "connector_id": "iqn.2012-06.org.openstack.magic", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/65ea0296-219b-4635-b0c8-a6e055da878d", "rel": "self"}, {"href": "http://localhost/volume/connectors/65ea0296-219b-4635-b0c8-a6e055da878d", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"}]} {3} ironic.tests.unit.common.test_image_publisher.SwiftPublisherTestCase.test_unpublish [0.051424s] ... ok {2} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_ok [0.082318s] ... ok {3} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_adapter_from_config [0.026027s] ... ok {3} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth [0.021793s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_source_path [0.065653s] ... ok {3} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth_fail [0.024974s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_437_lessee_reader_can_get_node_volume_connectors [0.106019s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5428b0a4-9292-4afa-a758-891e40ac67c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": [{"uuid": "0705241e-f5c3-4c4a-95e5-bb40dcad7b80", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/0705241e-f5c3-4c4a-95e5-bb40dcad7b80", "rel": "self"}, {"href": "http://localhost/volume/connectors/0705241e-f5c3-4c4a-95e5-bb40dcad7b80", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {2} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_raises_error [0.096089s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config [0.059994s] ... ok {3} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_service_auth [0.083505s] ... ok {2} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_return_inspect_wait [0.054944s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config_not_anaconda_boot [0.051005s] ... ok {3} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_session [0.023711s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template [0.044853s] ... ok {2} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_return_inspecting [0.054678s] ... ok {3} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_empty [0.060351s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_has_additional_variables [0.051433s] ... ok {2} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_return_other_state [0.076608s] ... ok {3} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port [0.055072s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_missing_variable [0.058538s] ... ok {3} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port_no_id [0.063772s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildServicePXEConfigTestCase.test_build_service_pxe_config_adopt [0.043786s] ... ok {2} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_unexpected_error [0.097806s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildServicePXEConfigTestCase.test_build_service_pxe_config_servicing [0.045974s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_438_third_party_admin_cannot_get_node_volume_connectors [0.309700s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-72d0ad43-de00-454d-9d1c-973d94c9ad49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_one_port [0.065694s] ... ok {2} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device [0.072684s] ... ok {3} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports [0.062324s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_439_service_cannot_get_node_volume_connectors [0.089061s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c44ce4d7-d154-466b-b234-5e40dc22171e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_node_locked [0.058307s] ... ok {2} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_validate_fail [0.046716s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_440_owner_reader_can_get_node_volume_targets [0.083769s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5622b6f5-0837-4735-8d52-d59ca1ccbe39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "a265e2f0-e97f-4177-b1c0-8298add53086", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/a265e2f0-e97f-4177-b1c0-8298add53086", "rel": "self"}, {"href": "http://localhost/volume/targets/a265e2f0-e97f-4177-b1c0-8298add53086", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"}]} {3} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports_inconsistent [0.099176s] ... ok {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments [0.053681s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_441_owner_service_can_read_get_node_volume_targets [0.070054s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-89126341-9d62-4956-a013-3366b8920941 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "a265e2f0-e97f-4177-b1c0-8298add53086", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/a265e2f0-e97f-4177-b1c0-8298add53086", "rel": "self"}, {"href": "http://localhost/volume/targets/a265e2f0-e97f-4177-b1c0-8298add53086", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"}]} {2} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_supported_boot_devices [0.069741s] ... ok {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments_no_physnet [0.032654s] ... ok {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_failure [0.019159s] ... ok {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_missing [0.018537s] ... ok {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment [0.019989s] ... ok {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment_no_physnet [0.022885s] ... ok {2} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device [0.114038s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_442_lessee_reader_can_get_node_volume_targets [0.119806s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b34782b2-db2f-48ed-8d08-50e042af5744 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": [{"uuid": "f86da14e-7a24-480a-998c-5f5dd8caa42e", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/f86da14e-7a24-480a-998c-5f5dd8caa42e", "rel": "self"}, {"href": "http://localhost/volume/targets/f86da14e-7a24-480a-998c-5f5dd8caa42e", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_failure [0.018985s] ... ok {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_missing [0.018631s] ... ok {3} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_single_segment [0.018855s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__add_ip_addresses_for_ipv6_stateful [0.033159s] ... ok {2} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_node_locked [0.094495s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv4 [0.029031s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv6 [0.036551s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_443_third_part_admin_cannot_read_node_volume_targets [0.142030s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-64e86c4e-0cdb-4f33-a773-87dbfd852e1e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_all_ports_fail [0.048251s] ... ok {2} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_validate_fail [0.099405s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_create_some_ports_fail [0.070623s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_444_service_cannot_read_node_volume_targets [0.143791s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1e964fc7-9067-490a-a862-6fe9482b1dc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_port [0.044426s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_pxe_enabled_ports [0.065797s] ... ok {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test___init__ [0.737502s] ... ok {2} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy [0.191282s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_445_owner_reader_cannot_get_drivers [0.151885s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-3d938cd8-3447-48c3-b1e5-7bce0085f0fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network [0.071419s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_all_ports [0.071928s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_instance_uuid [0.051560s] ... ok {2} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_deprecated [0.202703s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_446_lessee_reader_cannot_get_drivers [0.165492s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ae4b91a0-7aba-48cb-a46d-73541cca36bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_with_sg [0.055616s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_447_third_party_admin_cannot_get_drivers [0.146863s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-9d7c1c0f-f46c-403c-b53f-51e8c61cd463 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_locked [0.197982s] ... ok {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object [0.457523s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_448_service_cannot_get_drivers [0.176809s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-dc06aac3-7c8a-4c5b-af61-e50cdf0b0e4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_with_client_id_to_network [0.328136s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_smartnic_port_to_network [0.083288s] ... ok {2} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_worker_pool_full [0.259783s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_local_group_information [0.049680s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data [0.042574s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_449_owner_reader_cannot_get_drivers_vendor_passthru [0.200537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-8683ee82-2f6c-482d-ae5d-b99c7d5cc2a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data_ipv6 [0.031000s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_node_portmap [0.052530s] ... ok {2} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_wrong_state [0.195750s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_false [0.035524s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_450_lessee_reader_cannot_get_drivers_vendor_passthru [0.137851s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-d5742460-d7e6-4166-8c65-e9c3378f4dcf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_true [0.030589s] ... ok {2} ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port [0.075610s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports [0.045330s] ... ok {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_create_container_fails [0.513285s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_fail [0.043646s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_451_third_party_admin_cannot_get_drivers_vendor_passthru [0.127671s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ee26f7c9-2926-46b0-ae70-773673c34395 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_mac_exists [0.088026s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_race [0.041967s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_list_fail [0.048226s] ... ok {2} ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_conflict [0.073166s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_smartnic_ports [0.044237s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_452_service_cannot_get_drivers_vendor_passthru [0.133415s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e425c445-1f92-4ffc-9dfb-2e1a0f3fe19e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_inconsistent [0.075115s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network [0.046535s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled [0.050514s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled_all_ports [0.052727s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_453_owner_reader_can_get_bios_setttings [0.128475s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e8fa426c-e3b9-4feb-a129-8aa18901fd2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": []} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports [0.043311s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_454_lessee_reader_can_get_bios_settings [0.068061s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6f9e2faf-12f8-4f5e-a9f3-9df06037aacf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": []} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports_exception [0.058958s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_boot_validate_failure [0.210968s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_down [0.031057s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_455_third_party_admin_cannot_get_bios_settings [0.065944s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a48e21c7-f6d1-47bb-bd5c-0073604c6e75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_up [0.029214s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_456_service_can_get_bios_setttings_owner_project [0.066986s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/bios WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-eadde81e-7059-464c-b3c7-2d0df641eb4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": []} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface [0.061202s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_457_service_cannot_get_bios_setttings [0.070614s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6e1d2928-dbe5-44be-87f8-862e74569914 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface_with_client_id [0.052674s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface [0.048870s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_458_owner_reader_cannot_get_conductors [0.061321s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ff1a6af4-5f52-46b7-88e3-2c3c08053e96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_missed_info [0.052231s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_459_lessee_reader_cannot_get_conductors [0.060696s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-00c96afe-2b28-49dc-b223-295c4f7d368b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_with_client_id [0.045170s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_460_third_party_admin_cannot_get_conductors [0.064280s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b9935571-41c9-413f-a050-a7028fbe97f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_network_type_unmanaged [0.045747s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_no_smartnic_and_link_info [0.051659s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_461_owner_reader_can_get_allocations [0.071789s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f775f0a7-f833-4a3d-8bc9-e7cdfc1257e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "cb7924c3-2a84-4b30-8410-09af31348d0d", "created_at": "2025-11-11T18:59:15.915038+00:00", "updated_at": "2025-11-11T18:59:15.916493+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "resource_class": "CUSTOM_LEASED", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/cb7924c3-2a84-4b30-8410-09af31348d0d", "rel": "self"}, {"href": "http://localhost/allocations/cb7924c3-2a84-4b30-8410-09af31348d0d", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_link_info [0.048277s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_462_lessee_reader_can_get_allocations [0.069608s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1dcdd7c0-e4f4-4482-a0ff-8790054d601d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": [{"uuid": "660937f7-8d72-4c03-b0b7-4d851a1f762a", "created_at": "2025-11-11T18:59:15.987113+00:00", "updated_at": "2025-11-11T18:59:15.988435+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "resource_class": "CUSTOM_LEASED", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/660937f7-8d72-4c03-b0b7-4d851a1f762a", "rel": "self"}, {"href": "http://localhost/allocations/660937f7-8d72-4c03-b0b7-4d851a1f762a", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_no_link_info [0.092323s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_463_owner_reader_can_get_their_allocation [0.071776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/45de6be4-e7f7-40e0-bc37-0dfe8dbb4849 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2adffc4e-3a91-4c6f-a601-69215039c9e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "45de6be4-e7f7-40e0-bc37-0dfe8dbb4849", "created_at": "2025-11-11T18:59:16.051136+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/45de6be4-e7f7-40e0-bc37-0dfe8dbb4849", "rel": "self"}, {"href": "http://localhost/allocations/45de6be4-e7f7-40e0-bc37-0dfe8dbb4849", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups [0.070965s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_464_lessee_reader_can_get_their_allocation [0.083188s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/174a14ca-b6ab-4460-a97b-22fa133a6792 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-efd10dbf-de7d-4338-8c90-f2fddc1c9c12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "174a14ca-b6ab-4460-a97b-22fa133a6792", "created_at": "2025-11-11T18:59:16.137445+00:00", "updated_at": "2025-11-11T18:59:16.138748+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "resource_class": "CUSTOM_LEASED", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/174a14ca-b6ab-4460-a97b-22fa133a6792", "rel": "self"}, {"href": "http://localhost/allocations/174a14ca-b6ab-4460-a97b-22fa133a6792", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_create_object_fails [1.084365s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_exception_by_neutronclient [0.062031s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_ramdisk_deploy [0.709596s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_465_owner_admin_can_delete_their_allocation [0.083339s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/50bacef9-7924-4043-8f04-d0363d6a80ce GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-994c6b07-fc7d-427b-98b3-3110b45d03e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_less_than_configured [0.076978s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_466_owner_manager_can_delete_their_allocation [0.093852s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/1ac6937a-59fb-4132-9742-e5c63fb92f70 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-85b98565-86d7-46fd-a9d0-2f29d3e3f032 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_more_than_configured [0.088232s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_take_over_failure [0.156990s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_no_sg_from_neutron [0.062752s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_with_takeover [0.086577s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_down [0.057676s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_467_lessee_admin_can_delete_their_allocation [0.141041s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/3114d774-4f9a-458e-a5d8-e2f35d8cb5ee GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7b7ec99d-039e-4d83-938d-57914f673cd2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_from_data [0.340201s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_up [0.031665s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_down [0.031664s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node [0.104767s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_up [0.036732s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_468_lessee_manager_can_delete_their_allocation [0.094760s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/2a27cb38-1111-441d-b9a5-856c4f55e19d GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e9d11d74-a631-42e1-97b3-e5ba0aca071a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_active_max_retry [0.033385s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down [0.035914s] ... ok {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down_max_retry [0.032761s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_469_owner_member_can_delete_their_allocation [0.105719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/878e9605-e536-42e3-9f1c-d80da8738604 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4a3f02b7-8961-4523-8741-9ddd60102284 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_up [0.033763s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node_retry [0.155758s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_invalid_power_update [0.025037s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_1 [0.030673s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_470_lessee_member_can_delete_their_allocation [0.073163s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/dbba5ef0-92f2-4e11-a461-51094ac8ef5e GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-55b14cd5-6451-4c7d-8540-a5453aee3019 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_2 [0.066226s] ... ok {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_from_data_create_container_fails [0.332403s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_471_owner_member_can_patch_allocation [0.086310s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/e4ca4ee5-43d5-4d78-ab4b-9cfc808a75a2 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dea39b79-1119-4f5e-bc48-85cc84c5a520 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e4ca4ee5-43d5-4d78-ab4b-9cfc808a75a2", "created_at": "2025-11-11T18:59:16.829137+00:00", "updated_at": "2025-11-11T18:59:16.869361+00:00", "candidate_nodes": [], "extra": {"test": "testing"}, "last_error": null, "name": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/e4ca4ee5-43d5-4d78-ab4b-9cfc808a75a2", "rel": "self"}, {"href": "http://localhost/allocations/e4ca4ee5-43d5-4d78-ab4b-9cfc808a75a2", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_3 [0.050476s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_manage_of_failed_adoption [0.182644s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_4 [0.064797s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_472_lessee_member_can_patch_allocation [0.091885s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/e30b4178-e83b-487c-8bdb-22689865304a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f505a570-d0fb-49b1-80fb-c4381541e44f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e30b4178-e83b-487c-8bdb-22689865304a", "created_at": "2025-11-11T18:59:16.924876+00:00", "updated_at": "2025-11-11T18:59:16.961195+00:00", "candidate_nodes": [], "extra": {"test": "testing"}, "last_error": null, "name": null, "owner": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "resource_class": "CUSTOM_LEASED", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/e30b4178-e83b-487c-8bdb-22689865304a", "rel": "self"}, {"href": "http://localhost/allocations/e30b4178-e83b-487c-8bdb-22689865304a", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_disappears [0.052053s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_5 [0.058514s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_locked [0.053325s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_473_third_party_admin_can_get_allocations [0.076421s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cc682bb1-1379-48fc-b6ce-cd25356968e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": []} {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed [0.072001s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_no_worker_avail [0.064560s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova [0.069587s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_with_other_exception [0.074809s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova_auth_url [0.047028s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_maintenance_after_lock [0.052094s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_1 [0.056674s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_no_deploywait_after_lock [0.062400s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_2 [0.064978s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_not_mapped [0.058670s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_3 [0.052689s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_timeout [0.056612s] ... ok {3} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_4 [0.057598s] ... ok {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_from_data_create_object_fails [0.609446s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_worker_limit [0.054737s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_01 [0.045103s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeout [0.044192s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_474_third_party_admin_can_create_allocation [0.475814s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-dc7fcd52-a497-4d8b-a8c1-b22a7ad65a75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_02 [0.045564s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_03 [0.037905s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_disappears [0.056864s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_475_third_party_admin_cannot_create_allocation_with_owner_node [0.078773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST', 'node': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2bcd2b3e-4335-4ecf-b7b4-513ad66afac8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_locked [0.044519s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exit_with_other_exception [0.065873s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_476_third_party_admin_cannot_create_allocation_with_candidates_not_owned [0.090492s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST', 'candidate_nodes': ['1ab63b9e-66d7-4cd7-8618-dddd0f9f7881', '38d5abed-c585-4fce-a57e-a2ffc2a2ec6f']} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-92261011-c02c-4086-91b5-4e6750f403c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Nodes cannot be found: 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881, 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exiting_no_worker_avail [0.058410s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_477_owner_admin_can_create_allocation_with_their_uuid [0.083316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST', 'node': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8d860fcd-4472-4a2f-849f-42b7524e7d2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_no_acquire_after_lock [0.069733s] ... ok {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object [0.350547s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_not_mapped [0.049159s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_478_owner_manager_can_create_allocation_with_their_uuid [0.085819s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST', 'node': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-9b2fda1b-f132-4c3b-bb40-3f794d5f1494 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_to_maintenance_after_lock [0.061361s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_479_third_party_admin_cannot_read_an_allocation [0.068835s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/00d09133-661b-426d-a9a0-543febdc0b98 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-df6f1456-6e7e-4bff-ba3c-403ba152a0a1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 00d09133-661b-426d-a9a0-543febdc0b98 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_worker_limit [0.030532s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_04 [0.432628s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_480_third_party_admin_cannot_patch_an_allocation [0.091593s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/6a8652d4-0d9a-4cdd-827c-b2d8661baf9f WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-52232781-2a9f-4c46-8d66-7ff5d749b16e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 6a8652d4-0d9a-4cdd-827c-b2d8661baf9f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_05 [0.035972s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes [0.092654s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_06 [0.030424s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_07 [0.033082s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_alive [0.077093s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_481_third_party_admin_cannot_delete_an_allocation [0.088751s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/3c8eee71-4967-4ff0-8d1f-e827e5628c44 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-46dfa790-e1c8-45ae-9f1b-5145e738f8fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 3c8eee71-4967-4ff0-8d1f-e827e5628c44 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_08 [0.032990s] ... ok {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc [0.324754s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_09 [0.031389s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_10 [0.029093s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_cleaning [0.096281s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_482_owner_reader_can_read_node_allocation [0.097936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f31a6f8d-08a4-49f3-bf02-9d538af17e79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8193e3ad-980a-4f7a-84dc-836fb793f0b4", "created_at": "2025-11-11T18:59:18.183477+00:00", "updated_at": null, "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "resource_class": "CUSTOM_TEST", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/8193e3ad-980a-4f7a-84dc-836fb793f0b4", "rel": "self"}, {"href": "http://localhost/allocations/8193e3ad-980a-4f7a-84dc-836fb793f0b4", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_11 [0.035553s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_12 [0.023180s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_13 [0.021307s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_maintenance [0.081325s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_14 [0.023302s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_15 [0.021825s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_16 [0.021923s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_483_lessee_reader_can_read_node_allocation [0.135699s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-007039dd-ce18-4788-8be3-e6758ce1db70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c383bd2d-b1a7-485b-bba6-3e707d2f6d96", "created_at": "2025-11-11T18:59:18.333831+00:00", "updated_at": "2025-11-11T18:59:18.335054+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": "f11853c7-fa9c-4db3-a477-c9d8e0dbbf13", "resource_class": "CUSTOM_LEASED", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/c383bd2d-b1a7-485b-bba6-3e707d2f6d96", "rel": "self"}, {"href": "http://localhost/allocations/c383bd2d-b1a7-485b-bba6-3e707d2f6d96", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_17 [0.024402s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_exceptions_skipping [0.075575s] ... ok {3} ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions [0.019470s] ... ok {3} ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_objects [0.019356s] ... ok {3} ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases [0.018864s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_484_third_party_admin_cannot_read_node_allocation [0.075530s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-14a8d98e-ab3d-4f7e-b789-08acc2df037e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases_objects [0.022458s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_node_not_locked [0.092962s] ... ok {3} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_contains_all_db_objects [0.020796s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_disappears_on_acquire [0.026096s] ... ok {3} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_object_versions [0.021876s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_485_owner_admin_can_delete_allocation [0.073148s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a6d7a07a-2efa-46e1-9e40-b7a5041b957a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_rpc_version [0.055104s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_enroll_on_acquire [0.077516s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_486_owner_manager_can_delete_allocation [0.074187s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/allocation GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4c79ac45-2f39-4991-86a3-309af275c2cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_object_versions [0.042877s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_power_transition_on_acquire [0.068762s] ... ok {3} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_object_names_are_registered [0.048101s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_487_lessee_admin_can_delete_allocation [0.092348s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b7fd1bd8-24d5-4a41-9418-7e096034f411 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_rpc_and_objects_versions_supported [0.057689s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_locked_on_acquire [0.081469s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_488_lessee_manager_not_delete_allocation [0.079503s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-9be8d91d-1d36-4073-8808-ea22b0997c91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"Resource temporarily unavailable, please retry.\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_delete_object_exc_resource_not_found [0.632117s] ... ok {3} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_structure [0.070207s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_in_maintenance_on_acquire [0.073822s] ... ok {3} ironic.tests.unit.common.test_states.StatesTest.test_state_values_length [0.042199s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_489_third_party_admin_cannot_delete_allocation [0.069260s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-746d820a-e904-4955-b045-5abfeb8f26a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 38d5abed-c585-4fce-a57e-a2ffc2a2ec6f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_free_space_ok [0.022178s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_mapped [0.071472s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_not_writable [0.019891s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test__check_dir_writable_ok [0.019000s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_490_owner_reader_cannot_get_deploy_templates [0.074936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f8f03a47-cc50-4795-a72c-5ec4a041554b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_free_space_raises [0.018617s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_no_dir [0.020078s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_ok [0.019258s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_with_pass_in [0.019218s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient [0.019851s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_good [0.028490s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_recovers [0.021093s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_491_lessee_reader_cannot_get_deploy_templates [0.134696s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-af6a1546-0f2e-4a09-8f3b-be43f2f17101 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_warning_only [0.020254s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir [0.021044s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked [0.020946s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_492_third_party_admin_cannot_get_deploy_templates [0.071798s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-345a0413-0d27-4399-be28-aa4281cd0e34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_failed [0.256945s] ... ok {3} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked_error_on_rmtree [0.025720s] ... ok {1} ironic.tests.unit.common.test_swift.SwiftTestCase.test_get_temp_url [0.407499s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_success [0.055487s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_493_third_party_admin_cannot_post_deploy_template [0.076158s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d0e255c0-9e79-40c8-99dc-48149b78f4f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_not_use_standard_locale [0.041374s] ... ok {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_check_orphaned_allocations [0.087494s] ... ok {1} ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_no_env_variables [0.020672s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_494_service_cannot_get_deploy_templates [0.061193s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-01df9a89-7f69-490f-b7c8-6e14a7066f61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_with_env_variables [0.028997s] ... ok {1} ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_fail [0.023160s] ... ok {1} ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_success [0.022757s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_495_service_cannot_post_deploy_template [0.067013s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-67796379-afb5-4d3d-8483-13aca0cf1016 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation [0.106464s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_from_all_nodes_one_pass [0.195762s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_496_owner_reader_cannot_access_chassis [0.069249s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-88393752-e4dc-44b8-9dc2-0e6d505afae6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive [0.094432s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_497_lessee_reader_cannot_access_chassis [0.061942s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-6d766ff9-a531-480e-b55f-d9642bbcc1e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_db_conn [0.072711s] ... ok {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation_with_node_id [0.162491s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_498_third_party_admin_cannot_access_chassis [0.065915s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-6f5b9d83-c7be-43d0-9ada-4a36e1a67b75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_error [0.067944s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config [0.200142s] ... ok {1} ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker [0.049772s] ... ok {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_active_node [0.120872s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_499_third_party_admin_cannot_create_chassis [0.101258s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b0bec014-4700-441f-ad9e-54d1985be385 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_cannot_use_reserved [0.033363s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_two_pass [0.104948s] ... ok {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node [0.072236s] ... ok {1} ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_no_reserved [0.070177s] ... ok {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node_in_maintenance [0.057235s] ... ok {1} ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_none_free [0.044637s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_500_service_cannot_access_chassis [0.148911s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-23bfd3bd-815b-4629-9cd7-e879a06536f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_reserved [0.020389s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_with_days [0.098999s] ... ok {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_transient_node [0.088781s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_no_work [0.071918s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_all [0.098565s] ... ok {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_without_node [0.057819s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_501_service_cannot_create_chassis [0.142638s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-573e3fa8-92f9-4efc-beb6-61677ca5546d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_not_other_conductor [0.085685s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_async [0.096823s] ... ok {3} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_resume_allocations [0.121300s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits [0.095903s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_candidate_nodes_mismatch [0.052307s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_502_node_history_get_admin [0.150689s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-36f6f93d-560c-4042-8e26-dcc2b311c4d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "72c05049-4ace-47fb-b260-e263289ed485", "created_at": "2025-11-11T18:59:20.011999+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/72c05049-4ace-47fb-b260-e263289ed485", "rel": "self"}]}]} {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_invalid_parameter_value [0.046221s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_node_associated_with_another_instance [0.065894s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_node_locked [0.058468s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_node_not_found [0.043348s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_non_existing_node [0.055066s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_continue_from_last_step [0.224693s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_503_node_history_get_member [0.177856s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5fd8d71e-184a-4648-9c17-73151b6069f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "7971ac92-7df3-430a-8225-9853e6bbb3c8", "created_at": "2025-11-11T18:59:20.177486+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/7971ac92-7df3-430a-8225-9853e6bbb3c8", "rel": "self"}]}]} {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_resource_class_mismatch [0.060352s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_replace [0.078921s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_state_not_active [0.063098s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits [0.096672s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_traits_mismatch [0.068136s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_504_node_history_get_reader [0.157907s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-241375ad-1664-4223-b25b-f5d26177d631 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "e8aff7ab-e3ae-4696-91d9-93808dd3d914", "created_at": "2025-11-11T18:59:20.344203+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/e8aff7ab-e3ae-4696-91d9-93808dd3d914", "rel": "self"}]}]} {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_all [0.062995s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_dynamic [0.257635s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_uuid_associated_with_another_instance [0.077393s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_empty [0.064117s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_associated_node [0.055992s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_locked [0.061912s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_505_node_history_get_service [0.163448s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d54009d5-dc90-4c9f-afbd-e61012e215c2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"history": [{"uuid": "c6e46a77-8e0f-42a0-b92c-a56458c243fe", "created_at": "2025-11-11T18:59:20.520126+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/c6e46a77-8e0f-42a0-b92c-a56458c243fe", "rel": "self"}]}]} {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_candidate_nodes [0.057490s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_not_found [0.060437s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_unassociated_node [0.058513s] ... ok {2} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_trait_not_found [0.063514s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_506_node_history_get_service_cannot_be_retrieved [0.125492s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-651b5639-1ebd-45d1-93bc-3a443fde917b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_fast_track [0.245717s] ... ok {2} ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_1_nodes_8_workers [0.026487s] ... ok {2} ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_6_nodes_8_workers [0.024461s] ... ok {3} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_without_resource_class [0.120924s] ... ok {2} ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_1_worker [0.035137s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_507_node_history_get_entry_admin [0.075809s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/01b4a407-2e89-4740-9a85-bb8abd4f127e WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c37ffeae-9b0c-42e6-9585-ce840d4f3301 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_8_workers [0.039191s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_508_node_history_get_entry_member [0.074652s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/fcb06772-2969-4bdb-a061-b33237e85ce1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2a480f0b-6d40-447a-af3e-06c2098af103 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "fcb06772-2969-4bdb-a061-b33237e85ce1", "created_at": "2025-11-11T18:59:20.826865+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/fcb06772-2969-4bdb-a061-b33237e85ce1", "rel": "self"}]} {2} ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_node_prioritization [0.080419s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_in_deploywait [0.199491s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_509_node_history_get_entry_reader [0.083920s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/8efec777-896e-4f0b-bb05-65734558b2bb WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bb7a4b16-54b9-4bd8-9d96-9c7092b06e2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8efec777-896e-4f0b-bb05-65734558b2bb", "created_at": "2025-11-11T18:59:20.918793+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/8efec777-896e-4f0b-bb05-65734558b2bb", "rel": "self"}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_510_lessee_node_history_get_admin [0.084020s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/20598396-18fc-4f00-ad83-eff2f54a25a3/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fab5b6d6-8d9a-40d7-b909-5b48ce27e6ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 20598396-18fc-4f00-ad83-eff2f54a25a3 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done [0.142737s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_hardware_interfaces [0.318326s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_invalid_state [0.199345s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_no_valid_default [0.066780s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_getting_current [0.094207s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_maintenance [0.158126s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_in_background_task [0.099925s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_partial_ok [0.096912s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_511_lessee_node_history_get_member [0.334012s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/39e39beb-fbdc-474e-8fef-34e864654331/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-09a2a99a-400e-49b2-aadd-22d8440a8373 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 39e39beb-fbdc-474e-8fef-34e864654331 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_power_validate_fail [0.090116s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_existing [0.100834s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_512_lessee_node_history_get_reader [0.142722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/ca797ffc-43dc-4e48-86fc-de768ac727a1/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-950a49a2-8fe3-4e6e-b874-6b1f8241e462 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node ca797ffc-43dc-4e48-86fc-de768ac727a1 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_node_already_locked [0.091705s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_done [0.124006s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console [0.566624s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_valid [0.091505s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_513_lessee_node_history_get_entry_admin [0.138937s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/52986118-e001-44ec-ae83-87cadeba8275/history/e90e7cf5-b7d2-437b-9ad0-e65aa370c155 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9674824b-54bd-4cf9-9746-fd282f8eddae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 52986118-e001-44ec-ae83-87cadeba8275 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_error [0.148023s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_validate_fail [0.083760s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_worker_pool_full [0.102701s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_514_lessee_history_get_entry_member [0.154342s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/34b0b8c5-6fc6-45f0-9059-12975fc17413/history/59c2d8b8-4fb8-491b-b5b8-8cb09a85c6ab WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ac062ad8-dd53-4d02-81ab-efbb9a582226 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 34b0b8c5-6fc6-45f0-9059-12975fc17413 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.ContinueInspectionTestCase.test_continue_ok [0.048157s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console_error [0.247537s] ... ok {3} ironic.tests.unit.conductor.test_manager.ContinueInspectionTestCase.test_continue_with_discovery [0.053242s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_515_lessee_node_history_get_entry_reader [0.133986s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/226cad11-0518-4ce2-91ae-7decdbadf186/history/8d4bbb2c-94b7-4394-95dd-0732f3beddad WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-413d9742-03bc-4b05-9f79-d5df7180a444 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 226cad11-0518-4ce2-91ae-7decdbadf186 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.ContinueInspectionTestCase.test_wrong_state [0.069231s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_516_owner_service_node_history_get_entry_reader [0.082295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/f92e001a-e54e-4b00-9a73-e0f088f3e2fc WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9f91ce9e-38d6-4002-8db3-1752bc76c330 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f92e001a-e54e-4b00-9a73-e0f088f3e2fc", "created_at": "2025-11-11T18:59:22.022071+00:00", "severity": "ERROR", "event_type": "provisioning", "event": "Something is wrong", "conductor": "host-1", "user": "fake-user", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/f92e001a-e54e-4b00-9a73-e0f088f3e2fc", "rel": "self"}]} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_none [0.204643s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node [0.181103s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_waiting [0.460789s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_517_third_party_admin_cannot_get_node_history [0.102567s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e0134cb1-4a29-476c-8de0-33a4ee9c31d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy [0.115135s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_first_agent_boot [0.090612s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_adopt_failed_no_power_change [0.160182s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_518_node_history_get_entry_service [0.161790s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/3bfcaac9-d680-4009-8429-8dc8694dfb5a WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fb797ca6-8aa7-4588-bd84-d159e9e2079e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_deployfail_state [0.203546s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_no_skip_step [0.111866s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_519_node_inventory_get_admin [0.116648s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/inventory WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e309fd3-c711-4402-ac3b-4133c1d5bab0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"inventory": {"inventory": "test"}, "plugin_data": {"pdata": {"plugin": "data"}}} {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_allowed_in_maintenance [0.146947s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_steps_validation [0.115803s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_520_node_inventory_get_member [0.088792s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/inventory WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ad8a9c71-1c36-4bef-9157-1bb1e06810bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"inventory": {"inventory": "test"}, "plugin_data": {"pdata": {"plugin": "data"}}} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_error_state [0.185278s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_associated [0.129374s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_521_node_inventory_get_reader [0.084512s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/inventory WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c0045b03-0cfc-4b18-bdf6-4e7f46ceb8a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"inventory": {"inventory": "test"}, "plugin_data": {"pdata": {"plugin": "data"}}} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_agent_busy [0.144404s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_from_available_state [0.126616s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_broken_driver [0.099471s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_522_lessee_node_inventory_get_admin [0.094851s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/8ca32894-f96d-4ac5-9a16-0f621b2d89bb/inventory WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5ec4307b-1042-4586-9107-c72e81432328 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 8ca32894-f96d-4ac5-9a16-0f621b2d89bb could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_disable_fail [0.106531s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_protected [0.123591s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_523_lessee_node_inventory_get_member [0.086669s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/b3efc305-c29c-4d27-aea2-764ccfac8cb7/inventory WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4c8a4c34-4d78-4207-a702-d141ee9720b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node b3efc305-c29c-4d27-aea2-764ccfac8cb7 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_bad_step_return_value [0.207118s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_524_lessee_node_inventory_get_reader [0.069877s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/d0686d25-cd7e-4640-92ea-5b02e093889f/inventory WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-190039e6-9422-479a-8c05-3538dac949f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node d0686d25-cd7e-4640-92ea-5b02e093889f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_traits_validate_fail [0.098528s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_enabled [0.111871s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_525_shard_get_shards_disallowed [0.084598s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9b208ea3-6341-409a-865a-70e5029fb33a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:shards:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_fail [0.096836s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_invalid_provision_state [0.087932s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_526_shard_patch_set_node_shard_disallowed [0.072212s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH [{'op': 'replace', 'path': '/shard', 'value': 'TestShard'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1f64de89-d060-4e6d-b678-679cb64c0d31 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:shard\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_power_off [0.089061s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_template_fail [0.107890s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_527_parent_node_patch_by_admin [0.093132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/parent_node', 'value': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-acfc2a9b-5969-4d11-ab2c-f8eb8f212466 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:parent_node\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_exception [0.273032s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected [0.083245s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_528_parent_node_patch_by_member [0.080869s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/parent_node', 'value': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f00cab0e-df43-458c-9aff-1a391db94ca2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:parent_node\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_worker_pool_full [0.115603s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_error_state [0.031009s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected_provision_state_available [0.100074s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_no_state_change [0.023516s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_529_parent_node_patch_by_reader [0.079258s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/parent_node', 'value': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8189d295-65a5-481e-8145-fde65bf98928 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:parent_node\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_only_once [0.025927s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_resource_released [0.025592s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_handled_exception [0.197098s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_stable [0.020786s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_reserved [0.088384s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_530_parent_node_patch_by_manager [0.083016s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/parent_node', 'value': '1ab63b9e-66d7-4cd7-8618-dddd0f9f7881'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1d6b6d75-2108-4040-9254-9cf3c3cbf638 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:update:parent_node\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_unstable [0.028754s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_with_allocation [0.051115s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_stable [0.040305s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_531_parent_node_patch_by_cannot_see_node [0.062469s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH [{'op': 'replace', 'path': '/parent_node', 'value': 'f11853c7-fa9c-4db3-a477-c9d8e0dbbf13'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d52ca620-7455-4849-a25f-c21f85d93357 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Unable to apply the requested parent_node. Requested value was invalid.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_unstable [0.039513s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock [0.063526s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_532_parent_node_children_can_get_list_of_children [0.087591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/children WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dd307d2e-250b-48f8-86ca-a0b5498c95c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"children": ["3c3b8adb-edd7-3ed0-8e82-aab714d8411a"], "links": {"href": "http://localhost/v1/nodes?parent_node=1ab63b9e-66d7-4cd7-8618-dddd0f9f7881", "rel": "children"}} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_ironic_exception [0.215017s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_build_driver_exception [0.049161s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_no_retries [0.027851s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_handles_hold_from_active [0.056307s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_patient [0.028195s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_then_lock [0.032119s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_533_lessee_cannot_get_a_nodes_children [0.174180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/children WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-997a8674-0b5e-46bd-9229-bb096a753b60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_portgroups_exception [0.036289s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_handles_hold_from_wait [0.125036s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_ports_exception [0.056018s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_534_owner_reader_can_get_firmware_components [0.070189s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/firmware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-23a43354-2c8f-4143-8194-af0647a6b7f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"firmware": []} {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_volconn_exception [0.055149s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_535_lessee_reader_can_get_firmware_components [0.076176s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/firmware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-64c4aae2-327a-41cb-baa5-a7ea3138e0cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"firmware": []} {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_voltgt_exception [0.054260s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_536_third_party_admin_cannot_get_firmware_components [0.073382s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/firmware WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ebfa6da9-62af-462f-83c2-06e1f2350343 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_inventory_in_swift_get_destroyed_after_destroying_a_node_by_uuid [0.522422s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_reserve_exception [0.051586s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_no_steps [0.254138s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_537_service_can_get_firmware_components_owner_project [0.086338s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/firmware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-182e8db4-be87-4252-9f5b-fd0d8ca1c8b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"firmware": []} {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_upgade_exception_no_retries [0.059774s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_inventory_in_swift_not_destroyed_SwiftOSE_maintenance [0.101986s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_nested_acquire [0.058907s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_538_service_cannot_get_firmware_components [0.092696s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/firmware WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-86f44bee-f552-46e1-aa66-3296a2d45c97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_inventory_in_swift_not_destroyed_SwiftOSE_not_maintenance [0.080290s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_init_prepares_fsm [0.069564s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort [0.069479s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_539_runbooks_post_admin [0.092328s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/83e016ff-cd00-4fb8-b993-381103e3a590 Openstack-Request-Id: req-68113ddf-9c76-4700-afce-57fc2be4e3f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "83e016ff-cd00-4fb8-b993-381103e3a590", "created_at": "2025-11-11T18:59:24.216063+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/83e016ff-cd00-4fb8-b993-381103e3a590", "rel": "self"}, {"href": "http://localhost/runbooks/83e016ff-cd00-4fb8-b993-381103e3a590", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot [0.197741s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_no_driver [0.065548s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock [0.040920s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort_clean_up_fail [0.073430s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_build_driver_exception [0.038215s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_540_runbooks_post_manager [0.113569s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/431c3ce3-470e-42c5-ac7e-bea7dfc5b4a2 Openstack-Request-Id: req-37af0e14-8899-4586-9579-ae7297b5c711 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "431c3ce3-470e-42c5-ac7e-bea7dfc5b4a2", "created_at": "2025-11-11T18:59:24.330730+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/431c3ce3-470e-42c5-ac7e-bea7dfc5b4a2", "rel": "self"}, {"href": "http://localhost/runbooks/431c3ce3-470e-42c5-ac7e-bea7dfc5b4a2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_portgroups_exception [0.037600s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_ports_exception [0.035094s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot_fail [0.176988s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_volconn_exception [0.027827s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_bad_state [0.141124s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_voltgt_exception [0.039000s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_541_service_post_runbook [0.159346s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/05a318d4-9030-493b-ba27-d2955a5e4c7c Openstack-Request-Id: req-3c140b59-45f4-4ed0-91bd-e5e42ea80c21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "05a318d4-9030-493b-ba27-d2955a5e4c7c", "created_at": "2025-11-11T18:59:24.490739+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/05a318d4-9030-493b-ba27-d2955a5e4c7c", "rel": "self"}, {"href": "http://localhost/runbooks/05a318d4-9030-493b-ba27-d2955a5e4c7c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_node_get_exception [0.034498s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after [0.036487s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_errors [0.120397s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_exception_while_yielded [0.044418s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_db_error [0.197233s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_link_fails [0.047405s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescue [0.104179s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_542_third_party_admin_post_runbook [0.217546s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/runbooks/ff091f5b-c6f9-47ee-81a4-4164fecd798e Openstack-Request-Id: req-c2de562c-5cc2-453d-a369-bf62576c3ecd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ff091f5b-c6f9-47ee-81a4-4164fecd798e", "created_at": "2025-11-11T18:59:24.692321+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "ae64129e-b188-4662-b014-4127f4366ee6", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/ff091f5b-c6f9-47ee-81a4-4164fecd798e", "rel": "self"}, {"href": "http://localhost/runbooks/ff091f5b-c6f9-47ee-81a4-4164fecd798e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook [0.088849s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescuewait [0.114426s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook_exception [0.072625s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue [0.137956s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_543_runbooks_post_public_admin [0.220977s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'public': True, 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b3132cb1-848e-40b2-9b50-cf5cfa119bfa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create a public runbook as a project scoped admin.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_swift_error [0.333501s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_bad_state [0.107263s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_544_runbooks_post_public_service [0.155252s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'public': True, 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f92913a4-8988-43b8-8c34-429166fbc5ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Cannot create a public runbook as a project scoped admin.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_spawn_fails [0.317944s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_ironic_error [0.110706s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_unexpected_error [0.204203s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock [0.062243s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_other_error [0.144709s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock_refreshes_fsm [0.090855s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_ironic_exception [0.137819s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue [0.105438s] ... ok {2} ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_already_present [0.112841s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_error_old [0.125536s] ... ok {2} ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_empty [0.079890s] ... ok {2} ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_failed [0.059540s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_prepare_error [0.137146s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_invalid_state [0.180951s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_maintenance [0.046790s] ... ok {2} ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_ok [0.076822s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_545_runbooks_patch_admin [0.550378s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/dd1bc549-e3fc-4573-a824-b8a22c954e70 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d2594db1-a746-496b-89c4-3032be57898e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "dd1bc549-e3fc-4573-a824-b8a22c954e70", "created_at": "2025-11-11T18:59:25.567405+00:00", "updated_at": "2025-11-11T18:59:25.635961+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/dd1bc549-e3fc-4573-a824-b8a22c954e70", "rel": "self"}, {"href": "http://localhost/runbooks/dd1bc549-e3fc-4573-a824-b8a22c954e70", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_unsupported [0.058750s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_unexpected_exception [0.145983s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_network_validate_fail [0.110586s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track [0.045931s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_config_false [0.042029s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_546_runbooks_patch_manager [0.126826s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/9d0a59dd-ec5e-4919-be2e-c91dd55b8ce9 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-84601fe5-d532-4a99-8fdd-d2b0e5819a12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9d0a59dd-ec5e-4919-be2e-c91dd55b8ce9", "created_at": "2025-11-11T18:59:25.685249+00:00", "updated_at": "2025-11-11T18:59:25.755236+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/9d0a59dd-ec5e-4919-be2e-c91dd55b8ce9", "rel": "self"}, {"href": "http://localhost/runbooks/9d0a59dd-ec5e-4919-be2e-c91dd55b8ce9", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_power_validate_fail [0.069313s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info [0.047410s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info_string [0.044860s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_fast_track [0.159099s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_rescue_validate_fail [0.088913s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_547_service_patch_runbook [0.139146s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/42db422f-90df-4f58-a29d-e796ca2648ff WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-00d1da23-5c29-4d9e-a212-d13f937c0946 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "42db422f-90df-4f58-a29d-e796ca2648ff", "created_at": "2025-11-11T18:59:25.821448+00:00", "updated_at": "2025-11-11T18:59:25.899143+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/42db422f-90df-4f58-a29d-e796ca2648ff", "rel": "self"}, {"href": "http://localhost/runbooks/42db422f-90df-4f58-a29d-e796ca2648ff", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_error_blocks [0.063439s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_inspected_no_heartbeat [0.050552s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok [0.133022s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_548_project_admin_delete_runbook [0.089704s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/852637a3-166c-4850-8150-b5a4f1962317 GOT Response: 204 No Content Openstack-Request-Id: req-df4eb8e0-7ee7-4132-805d-0aa14472d407 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue [0.135646s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_no_heartbeat [0.066185s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_549_project_manager_delete_runbook [0.097451s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/85a04b67-567e-4739-911f-c472143bce89 GOT Response: 204 No Content Openstack-Request-Id: req-9c89e7ea-15b4-4855-bfb8-b963351cc055 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_not_in_servicing [0.073808s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_invalid_state [0.113750s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_2 [0.142282s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_power_off_false [0.049353s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_550_service_get_runbooks [0.112941s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4824477d-ccf1-4485-9d87-5fa847a5e070 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "5e4f8330-8afb-44cc-91b2-2b6f58d74d3b", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/5e4f8330-8afb-44cc-91b2-2b6f58d74d3b", "rel": "self"}, {"href": "http://localhost/runbooks/5e4f8330-8afb-44cc-91b2-2b6f58d74d3b", "rel": "bookmark"}]}]} {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_maintenance [0.099396s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_powered_after_heartbeat [0.096156s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_configdrive [0.125287s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_551_runbooks_project_admin [0.083495s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e5d376a-ea15-4c17-b8f8-54424f2b86d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "a39bf97c-912e-4dda-a99f-5d87cc9f8d36", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/a39bf97c-912e-4dda-a99f-5d87cc9f8d36", "rel": "self"}, {"href": "http://localhost/runbooks/a39bf97c-912e-4dda-a99f-5d87cc9f8d36", "rel": "bookmark"}]}]} {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_validate_fail [0.077674s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info [0.051741s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info_string [0.071548s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_552_runbooks_runbook_id_get_project_admin [0.111045s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/90d45599-63d4-4736-8edf-45fa26f9d658 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6ffe9b4b-1044-460c-bda0-664181b495c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "90d45599-63d4-4736-8edf-45fa26f9d658", "created_at": "2025-11-11T18:59:26.342496+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/90d45599-63d4-4736-8edf-45fa26f9d658", "rel": "self"}, {"href": "http://localhost/runbooks/90d45599-63d4-4736-8edf-45fa26f9d658", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__calculate_target_state [0.031280s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_provision_rescue_abort [0.154579s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_db_not_in_sync [0.086543s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_553_project_admin_patch_runbook [0.124175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/5fe25e79-f08c-456d-8017-ca6282c70d0b WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b09807e5-8265-4885-94ad-1633b422a336 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5fe25e79-f08c-456d-8017-ca6282c70d0b", "created_at": "2025-11-11T18:59:26.442359+00:00", "updated_at": "2025-11-11T18:59:26.527458+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/5fe25e79-f08c-456d-8017-ca6282c70d0b", "rel": "self"}, {"href": "http://localhost/runbooks/5fe25e79-f08c-456d-8017-ca6282c70d0b", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_different_state [0.049840s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_554_runbooks_project_manager [0.084840s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-00dddd38-9eaa-4d01-9860-f6178ff2ee8c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "4b4aa1f3-46ac-43c7-a579-7fc2f53ea3dc", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/4b4aa1f3-46ac-43c7-a579-7fc2f53ea3dc", "rel": "self"}, {"href": "http://localhost/runbooks/4b4aa1f3-46ac-43c7-a579-7fc2f53ea3dc", "rel": "bookmark"}]}]} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_failed_getting_state_notify [0.085599s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service [0.219188s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_unexpected_prepare_error [0.418606s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_555_runbooks_runbook_id_get_project_manager [0.079058s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/eb80b52e-ed46-4885-9e75-9247c5c42cd3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-75741462-31a6-47c4-98cd-6be25112154e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "eb80b52e-ed46-4885-9e75-9247c5c42cd3", "created_at": "2025-11-11T18:59:26.651685+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/eb80b52e-ed46-4885-9e75-9247c5c42cd3", "rel": "self"}, {"href": "http://localhost/runbooks/eb80b52e-ed46-4885-9e75-9247c5c42cd3", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_same_state [0.076009s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_already_being_processed [0.054177s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_do_node_deploy_steps [0.130380s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_failed_getting_state [0.049058s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_556_project_manager_patch_runbook [0.132824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/92647e6c-8eaa-4e06-97a7-b5977af9b25c WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a3b92f3f-244d-4765-86f4-802adbe580db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "92647e6c-8eaa-4e06-97a7-b5977af9b25c", "created_at": "2025-11-11T18:59:26.753975+00:00", "updated_at": "2025-11-11T18:59:26.824537+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/92647e6c-8eaa-4e06-97a7-b5977af9b25c", "rel": "self"}, {"href": "http://localhost/runbooks/92647e6c-8eaa-4e06-97a7-b5977af9b25c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_abort [0.162338s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_node_validation_in_disabled_bios_boot_mode_fails [0.047769s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_557_runbooks_project_member [0.083750s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-58949b51-7a0a-444b-89b7-533e6b97d492 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "9db8a21c-c370-41da-9e81-4429fc520e5d", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/9db8a21c-c370-41da-9e81-4429fc520e5d", "rel": "self"}, {"href": "http://localhost/runbooks/9db8a21c-c370-41da-9e81-4429fc520e5d", "rel": "bookmark"}]}]} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_failed_getting_state_notify [0.092361s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_node_validation_in_disabled_uefi_boot_mode_fails [0.056292s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_in_same_state [0.059577s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_558_runbooks_runbook_id_get_project_member [0.076131s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/7cf75198-8427-4624-97ff-402fafd6641b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-74543fcf-d80a-49f2-913e-73669fb16076 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7cf75198-8427-4624-97ff-402fafd6641b", "created_at": "2025-11-11T18:59:26.954980+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/7cf75198-8427-4624-97ff-402fafd6641b", "rel": "self"}, {"href": "http://localhost/runbooks/7cf75198-8427-4624-97ff-402fafd6641b", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_legacy_false [0.107019s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_in_same_state_db_not_in_sync [0.064242s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_559_runbooks_list_project_reader [0.066170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-29a75d20-abb7-494a-9123-926ed3d86a2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": [{"uuid": "8d72b7fc-3391-4fb9-b7bd-9fbb9a0f8420", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/8d72b7fc-3391-4fb9-b7bd-9fbb9a0f8420", "rel": "self"}, {"href": "http://localhost/runbooks/8d72b7fc-3391-4fb9-b7bd-9fbb9a0f8420", "rel": "bookmark"}]}]} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_invalid_state [0.076039s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_legacy_false_even_if_src_set [0.115693s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_560_runbooks_runbook_id_get_project_reader [0.102545s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/26075f70-21e6-441f-951f-10cfeed95877 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aae47f81-4809-42cb-99f5-947e1030669c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "26075f70-21e6-441f-951f-10cfeed95877", "created_at": "2025-11-11T18:59:27.099508+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/26075f70-21e6-441f-951f-10cfeed95877", "rel": "self"}, {"href": "http://localhost/runbooks/26075f70-21e6-441f-951f-10cfeed95877", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_561_runbooks_list_third_party_admin [0.072437s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d104b7fc-d17c-44af-932d-a04a25e03888 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"runbooks": []} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_invalid_state_notify [0.146239s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_source_instance [0.162107s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_562_project_reader_cannot_post_runbook [0.101425s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-409f0efe-03dc-47d7-bb36-0ba2c4d6d286 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_keep_last_error [0.121416s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_563_project_reader_cannot_patch_runbook [0.080276s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/b00bdd1f-9b0f-47b2-9616-8a17fd7beea3 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c1e42307-51ab-4429-bd19-1ee4140b7a77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off [0.066086s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_abort_last_service_step [0.625035s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_564_project_reader_cannot_set_runbook_owner [0.064556s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/97836176-341d-4d73-9291-127ae8177ac8 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b994e082-fc54-4199-acfe-0ff7fbf09cbb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:owner\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_source_none [0.196506s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_565_project_reader_cannot_set_runbook_public [0.076732s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/7e07f8a3-1294-4866-bd34-a4fe3f559678 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ec37389c-0410-4933-a272-a509bf61c5de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:public\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_locked [0.105986s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_already [0.108619s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_pregenerated_token [0.056510s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_worker_pool_full [0.096176s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_source_request [0.157100s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_566_project_reader_cannot_delete_runbook [0.136424s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/8b130824-159a-4f33-b6ec-c3faa8161d8d GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-490b5bad-3aaa-432d-be42-ad28d0050c33 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_storage_detach [0.068959s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on [0.063542s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_wrong_state [0.107859s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_567_project_member_cannot_post_runbook [0.091656s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_NAME', 'steps': [{'interface': 'raid', 'step': 'noop', 'args': {}, 'order': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d15c5b62-bb34-44aa-96b8-377497eb8130 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on_notify [0.088206s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_do_node_provision_action_unhold_service [0.093828s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_568_project_member_cannot_patch_runbook [0.079461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/7606e13b-2bed-423d-a72b-b4c9bdb397b6 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1d486278-b6be-4c62-8f41-043ceb3f0a21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path [0.191654s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on_storage_attach [0.073894s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_569_project_member_cannot_set_runbook_owner [0.075926s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/c7df5613-ccd3-4585-8dd8-6a5c3d15d0fe WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4feb4e44-206b-4f90-87bd-edb7817edb7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:owner\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_do_node_service [0.097108s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_reboot [0.063137s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path_none [0.165137s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_570_project_member_cannot_set_runbook_public [0.103071s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/02a20fe0-b02a-4547-86ab-1cd5fd5ded78 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d6ef16f6-476a-458e-bfc5-6b8eca2b70dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:public\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_do_node_service_maintenance [0.098967s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_reboot_no_timeout [0.070076s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_update_fails_on_invalid_boot_mode [0.052722s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_571_project_member_cannot_delete_runbook [0.068119s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/df2f41c1-95e5-4e87-938f-8e77968bb7b2 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-74e70e68-0a46-435c-b261-71414222a977 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_reboot_storage_attach [0.058097s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_automated_clean [0.106685s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_572_project_manager_cannot_set_runbook_owner [0.072891s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/c7692239-7272-424b-b840-1bc492b9b7a9 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ad2d3f33-19e0-4296-9c4c-2779f76289cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:owner\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_set_power_failure [0.076035s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_573_project_manager_cannot_set_runbook_public [0.068176s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/e1d1433c-229d-425f-a8f1-4a2e9421b345 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2d61ad67-14f3-479f-b1cd-405d111fa38b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:public\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_getting_current [0.175615s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_clean_step_not_abortable [0.113639s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_set_power_failure_notify [0.101863s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_574_project_admin_cannot_set_runbook_owner [0.085941s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/a9ecac4a-c0b5-4d29-9734-9399b6843de5 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-87c85de9-e731-49d7-bd6e-7a42990c806e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:owner\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_no_change [0.044645s] ... ok {2} ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_existing [0.032104s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_cleanhold_automated_clean [0.105448s] ... ok {2} ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_new [0.038150s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_575_project_admin_cannot_set_runbook_public [0.082453s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/b6aaa6d4-bb0c-4f93-8458-9db9e25e9b6a WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ccfc39a9-fde2-407d-9e99-094bf6c98202 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:public\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_take_over [0.029367s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_in_background_task [0.180650s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_576_service_cannot_patch_runbook_owner [0.076442s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/dd9aa61f-f627-4e5b-bbad-8169ec6cb51f WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a58c6edf-a99c-4c8d-9191-fe7516224afb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:owner\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios [0.065837s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_cleanhold_manual_clean [0.179974s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_577_service_cannot_patch_runbook_public [0.093730s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/784eb73b-2c59-475e-a214-f6c079e460a7 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0b15b962-40f4-4a87-b930-4c21919de34b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:public\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_from_deployhold [0.116342s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_existing [0.226527s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_578_third_party_admin_cannot_patch_runbook_owner [0.113934s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/5a36d17e-cd69-4435-bd82-167925425b88 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5c405e2d-7170-4d8e-bdb3-ee72e14b5e42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:owner\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_manual_clean [0.110665s] ... ok {2} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_exception [0.324882s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_node_already_locked [0.181581s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_manage [0.107733s] ... ok {2} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_unsupported [0.076177s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_provide [0.091821s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_valid [0.151897s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_579_third_party_admin_cannot_patch_runbook_public [0.336091s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/0b1c7e20-67f3-4a84-9e96-62264523adef WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1b5f4cc6-cde2-4665-82f7-85cc0700d163 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:runbook:update:public\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_provide_in_maintenance [0.095160s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_validate_fail [0.087042s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_001_values ... SKIPPED: These are fake reference values for YAML templating {2} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify [0.255018s] ... ok {3} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provisioning_action_worker_pool_full [0.113471s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_002_nodes_post_admin [0.094257s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-977406a4-e5a4-4d0d-ac59-e2c23dbe665b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_worker_pool_full [0.111588s] ... ok {3} ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_indicator_state [0.043463s] ... ok {3} ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_supported_indicators [0.039985s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_003_nodes_post_member [0.114058s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e63a2f21-da94-4c35-ac18-d1cec76eff02 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_set_indicator_state [0.048274s] ... ok {1} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_automated_clean [0.123637s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_fail [0.050254s] ... ok {2} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_get_state_fails [0.236414s] ... ok {1} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_boot_timeout [0.117967s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ilo [0.097394s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_004_nodes_post_observer [0.174719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4759f677-5401-47f2-9eda-5a8a02039282 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_manual_clean [0.106312s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_005_nodes_get_node_admin [0.076836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1123ce48-e4f6-4930-9d7e-f8afa12db4ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ipmi [0.160640s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_006_nodes_get_node_member [0.074066s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-01100494-ca30-4760-b51d-034982f94be5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_validation_fails [0.263104s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_007_nodes_get_node_observer [0.086235s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-58b2f5ea-fa93-4095-804a-923b3705195c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list [0.064893s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_manual_management [0.138926s] ... ok {1} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_deploy_timeouts [0.218297s] ... ok {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list_duplicate [0.066056s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_008_nodes_get_node_other_admin [0.098005s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-59186715-df11-43e3-abcb-456a90843f07 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list_node_not_exist [0.060621s] ... ok {1} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test_check_rescuewait_timeouts [0.117041s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_snmp [0.130400s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_009_nodes_get_admin [0.084493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-40277560-4f6b-4983-963d-30891334a94d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list [0.076578s] ... ok {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list_node_not_exist [0.051375s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_cleaning [0.109524s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test__mapped_to_this_conductor [0.143713s] ... ok {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list_setting_not_exist [0.065738s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_010_nodes_get_other_admin [0.157150s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4da6a732-60a4-45d0-b195-a8178c7b939a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": []} {1} ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_deploy [0.094446s] ... ok {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting [0.064262s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_get_node_with_token [0.103233s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_011_nodes_detail_get_admin [0.089217s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f4c46028-bb10-446d-b996-27d59aaa8710 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_list [0.062239s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_disable_console_already_disabled [0.105902s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_012_nodes_detail_get_member [0.076826s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c077a4bc-c377-4c97-a486-43c01e831bba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_list_node_not_exist [0.069648s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_013_nodes_detail_get_observer [0.069447s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c8047c02-1072-46e7-9273-73f6ba195792 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_node_not_exist [0.042730s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_enable_console_already_enabled [0.121194s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_014_nodes_node_ident_get_admin [0.082151s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c5c26d8b-709c-443f-b377-89f524711d98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_setting_not_exist [0.082108s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_015_nodes_node_ident_get_member [0.079651s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-056f3af0-63bf-428d-b428-a83b207b8d12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list [0.083114s] ... ok {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list_node_not_exist [0.060930s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_016_nodes_node_ident_get_observer [0.086242s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-260281c3-d5bc-4a74-bbcf-071b8232f12a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list_setting_not_exist [0.056014s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console [0.296719s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_017_nodes_node_ident_patch_admin [0.070648s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c823de46-4d47-444c-9bd9-a9e6a13c0110 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_create_firmware_component [0.064667s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_disabled [0.046397s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes [0.551019s] ... ok {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_create_firmware_component_duplicate [0.054592s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_validate_fail [0.035872s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_018_nodes_node_ident_patch_member [0.085742s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3cad8a26-f65a-4fe8-bba9-12a9c3eb6a79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_019_nodes_node_ident_patch_observer [0.081388s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4c4f66ec-8c27-4728-bec9-f33322b3609c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_delete_firmware_component_list [0.085307s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes_shutdown [0.135270s] ... ok {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component [0.050370s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_disabled [0.139663s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_020_nodes_node_ident_delete_admin [0.073644s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a2f5678d-b144-43ee-8729-bd3d85ac3c8d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component_list [0.054351s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_node_with_token_already_locked [0.073393s] ... ok {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component_list_node_not_exist [0.060431s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_021_nodes_node_ident_delete_member [0.099733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-605b8037-0a31-458c-8a9d-d4ab8944e49e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_enabled [0.114365s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_node_with_token_already_set [0.063902s] ... ok {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component_node_not_exist [0.044572s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail [0.066575s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_022_nodes_node_ident_delete_observer [0.101603s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5c070365-d490-4e4d-bf2e-e8a04d7a85ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component_setting_not_exist [0.071266s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_start_fail [0.124139s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_deploy_templates [0.074670s] ... ok {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_update_firmware_component_not_exist [0.051601s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_023_nodes_validate_get_admin [0.078170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d19edae6-4632-429c-88fd-e92f78b67772 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_instance_traits [0.072404s] ... ok {2} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_update_firmware_components [0.063408s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_024_nodes_validate_get_member [0.089320s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-339d5dde-984f-4a10-bea6-eec40f5e911b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_stop_fail [0.144721s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait [0.074965s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_unexpected [0.080432s] ... ok {3} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_dynamic_driver_interfaces [0.039160s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_validation_fail [0.081509s] ... ok {3} ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi [0.053256s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_025_nodes_validate_get_observer [0.127256s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1ca3fb71-c6aa-4150-ab0b-dbe8ca30eb57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_node_locked [0.046891s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_worker_pool_full [0.093547s] ... ok {3} ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_not_implemented [0.040161s] ... ok {1} ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node [0.036002s] ... ok {1} ironic.tests.unit.conductor.test_manager.CreateNodeTestCase.test_create_node_validation_fails [0.028926s] ... ok {3} ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_invalid_param [0.040562s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_026_nodes_maintenance_put_admin [0.133244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-75bf8ab4-2593-4f80-8f1c-7f2fc0f71083 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector [0.055995s] ... ok {3} ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_missing_param [0.048200s] ... ok {1} ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_locked [0.030594s] ... ok {1} ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_power_on [0.048150s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_at_limit [0.353712s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_027_nodes_maintenance_put_member [0.141333s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ea509f3c-b3ae-4a5a-9729-e9e9a6f5a303 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target [0.051400s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate [0.077969s] ... ok {1} ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_already_destroyed [0.049704s] ... ok {3} ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test__check_inspect_wait_timeouts [0.189618s] ... ok {3} ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_power_validate_fail [0.046320s] ... ok {1} ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_gone [0.087327s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_028_nodes_maintenance_put_observer [0.171130s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-54bb3d71-29ca-40b4-859b-78b9f061ebfd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_validate_fail [0.054976s] ... ok {1} ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_locked [0.052701s] ... ok {1} ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_power_on [0.044049s] ... ok {3} ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_worker_pool_full [0.086215s] ... ok {3} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties [0.073751s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_029_nodes_maintenance_delete_admin [0.191862s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3a63fd27-2317-48c9-be89-c747476b5b82 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties_iface_not_supported [0.031826s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate_at_limit [0.371369s] ... ok {3} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config [0.054702s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_node_not_exist [0.025755s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated [0.210325s] ... ok {3} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_empty [0.050110s] ... ok {3} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_iface_not_supported [0.058290s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_030_nodes_maintenance_delete_member [0.180667s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-170144c0-2435-4ccf-9946-a9aa21848af6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_invalid_parameter_value [0.051691s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort [0.164549s] ... ok {3} ironic.tests.unit.conductor.test_manager.RaidTestCases.test_get_raid_logical_disk_properties [0.065838s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_over_limit [0.237890s] ... ok {3} ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config [0.061203s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_031_nodes_maintenance_delete_observer [0.165506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-087830d2-fc14-4ea0-91a3-6a13d08b6776 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait [0.054142s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_node_not_found [0.030710s] ... ok {3} ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_empty [0.055460s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort_last_clean_step [0.171708s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_not_found [0.059429s] ... ok {3} ironic.tests.unit.conductor.test_manager.RaidTestCases.test_set_target_raid_config_invalid_parameter_value [0.060358s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_by_node_id [0.037646s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port [0.054832s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_empty [0.032641s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_locked [0.089729s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_node_not_exist [0.027236s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_active_node [0.049135s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_032_nodes_management_boot_device_put_admin [0.214145s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8db9e22d-73a8-4bbb-8bdd-6d99967a0213 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_exists [0.042454s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_node_not_exist [0.028072s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_maintenance [0.068076s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual [0.110284s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_not_exists [0.033157s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_active_state_and_maintenance [0.048831s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits [0.033020s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_deleting_state [0.043162s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_at_limit [0.043837s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_locked [0.035689s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_duplicate [0.031860s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort [0.138370s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_node_not_exist [0.025490s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_manageable_state [0.051217s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_over_limit [0.024678s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_033_nodes_management_boot_device_put_member [0.247220s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2fe69e83-6f46-4adf-bb06-cd539df00fb6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_empty_node_traits [0.026210s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_maintenance [0.058667s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits [0.044373s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort_last_clean_step [0.125672s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_node_deleting_state [0.051025s] ... ok {2} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits_node_not_exist [0.034332s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_address [0.025911s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_conflict [0.041992s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_uuid [0.025111s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_destroy_port [0.034328s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_inconsistent [0.049878s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_worker_pool_full [0.104654s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address [0.042224s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_port_changed_failure [0.046876s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_034_nodes_management_boot_device_put_observer [0.236084s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e5f9b71b-1ac7-419f-b36f-11b7d8ac3c7b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner [0.030223s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner_no_match [0.026653s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_wrong_state [0.096285s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_active_node [0.057709s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project [0.041501s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_enroll_node [0.064102s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project_no_match [0.034853s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_invalid_state [0.105648s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_to_node_in_inspect_wait_state [0.050047s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_maintenance [0.140762s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector [0.226375s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_network_validate_fail [0.100327s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_id [0.299698s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_duplicate [0.052667s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_name [0.039465s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_node_locked [0.029347s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_uuid [0.039436s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_node_power_on [0.037072s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list [0.045244s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_type [0.045706s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_owner [0.037204s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_uuid [0.042238s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_project [0.037965s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_ok [0.210635s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_sorted [0.032513s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_035_nodes_management_boot_device_get_admin [0.643600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d98d0299-2ca3-4c5a-807c-80bac70bd94a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_async [0.053238s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id [0.040926s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_driver_not_found [0.046028s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner [0.032951s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_http_method_not_supported [0.047647s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner_no_match [0.025822s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project [0.036051s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_power_validate_fail [0.173937s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_method_not_supported [0.049100s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_036_nodes_management_boot_device_get_member [0.148321s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-26a2cbd7-4d58-4257-8edb-8156b89f9ded X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project_no_match [0.033097s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_that_does_not_exist [0.035102s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_no_default_interface [0.066149s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id [0.030786s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner [0.030273s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_sync [0.058372s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_037_nodes_management_boot_device_get_observer [0.140507s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-551ddfca-367e-414f-b72e-6c7feea7f829 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner_no_match [0.033149s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_validation_failed [0.055796s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project [0.032568s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_worker_pool_full [0.214152s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project_no_match [0.026341s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_that_does_not_exist [0.024583s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods [0.062346s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_shard_no_match [0.025852s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods_no_default_interface [0.052650s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin [0.138557s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f0618062-d5da-482e-b252-f71d033b34de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_shard_with_match_multi [0.051090s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_get_node_vendor_passthru_methods [0.091343s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_shard_with_match_single [0.101963s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_async [0.083750s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_provision_action_unlocks_cleaning_automated [0.281962s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port [0.084150s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member [0.201125s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c98e40e2-1149-43fb-870f-1d61c5f46be0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_duplicated_address [0.064706s] ... ok {2} ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_uuid [0.027866s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_http_method_not_supported [0.134049s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create [0.024208s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create_duplicate_name [0.031133s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create_duplicate_uuid [0.025331s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_missing_method_parameters [0.091594s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create_invalid_step_no_interface [0.031781s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer [0.220168s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-07814214-2522-4b32-89d9-708ef063c339 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create_no_steps [0.034107s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_destroy [0.028084s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_node_already_locked [0.080478s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_by_id [0.028730s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_provision_action_unlocks_cleaning_manual [0.316871s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_by_name [0.026123s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_by_uuid [0.032850s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_shared_lock [0.085805s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_list [0.045620s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin [0.182004s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-90db778a-4a6c-450a-a6fa-761fbc34a584 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_sync [0.076174s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_list_by_names [0.041491s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_list_by_names_no_match [0.030311s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_list_sorted [0.033911s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_unsupported_method [0.078450s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_duplicate_name [0.040511s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_042_nodes_management_inject_nmi_put_member [0.136463s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7fd7f6aa-249d-427c-8fad-f7aa7a748671 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_provision_action_unlocks_deploying [0.237023s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_extra [0.030651s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_name [0.028429s] ... ok {3} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_worker_pool_full [0.098111s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_not_found [0.030030s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_drain_has_reserved [0.027303s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_shutdown_timeout_reached [0.029235s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_steps_add [0.041992s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer [0.150810s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-eca109af-3cea-4c6f-b848-441e4fa12e2b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_steps_remove_all [0.030824s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_start [0.044084s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_steps_replace [0.028837s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_not_support [0.185528s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_start_failure [0.033990s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_steps_replace_args [0.036740s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_start_no_rpc [0.031611s] ... ok {2} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_uuid_not_allowed [0.027633s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_after_full_reset_interval [0.036388s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_after_remaining_interval [0.023766s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_044_nodes_states_get_admin [0.157337s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-81c5c909-5906-4526-b813-2c7e7c2e73df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_has_reserved [0.023896s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task [0.073064s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_instant [0.025917s] ... ok {3} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_slow [0.025244s] ... ok {3} ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_cap [0.019073s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_failed [0.071159s] ... ok {3} ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_capped [0.028029s] ... ok {3} ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_versions_in_sync [0.018218s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_missing [0.049599s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_045_nodes_states_get_member [0.156986s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b0767089-b08c-41ca-b942-504bb00d26b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_steps.NodeServiceStepsTestCase.test__get_service_steps [0.040804s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed [0.062373s] ... ok {3} ironic.tests.unit.conductor.test_steps.NodeServiceStepsTestCase.test_set_node_service_steps [0.053284s] ... ok {3} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps [0.037477s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed_idrac5 [0.061865s] ... ok {3} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_only_enabled [0.039822s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_046_nodes_states_get_observer [0.131700s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4dfb63d7-b1e9-40e9-aaea-a60b37ae564b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_still_processing [0.056032s] ... ok {3} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_fail [0.032182s] ... ok {3} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_off [0.047954s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export [0.059543s] ... ok {3} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_ok [0.031964s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export_failed [0.059354s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_047_nodes_states_power_put_admin [0.160442s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-05fb989a-dfc9-42d5-9356-58e6defe06ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_not_drac [0.034013s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_return_failed [0.574453s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status [0.039984s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_no_task_monitor_url [0.061904s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_locked [0.036348s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_048_nodes_states_power_put_member [0.148915s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b4561620-2379-42dd-afea-15310cf18ff5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_notfound [0.050368s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_state_set_by_driver [0.212755s] ... ok {3} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_unsorted [0.308577s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_clean [0.052746s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_deploy [0.056013s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_049_nodes_states_power_put_observer [0.147262s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6c8f18d2-b859-459e-a940-22998882b524 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test_execute_verify_step [0.073175s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_clean [0.048092s] ... ok {3} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_template [0.053850s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_deploy [0.049955s] ... ok {3} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_usersteps [0.059533s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_succeeded [0.206081s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold [0.040597s] ... ok {3} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_ok [0.051242s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_050_nodes_states_boot_mode_put_admin [0.159462s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e546a9b1-5db1-4118-892b-574c76f1c187 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_skip_missing [0.112478s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_first_arg [0.059068s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_051_nodes_states_boot_mode_put_member [0.180909s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-48eb3f6d-6f48-462a-b3fa-c1a9ea2805b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover [0.234299s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_second_arg [0.045445s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_empty [0.296762s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_missing [0.035384s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_052_nodes_states_boot_mode_put_observer [0.125105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8ca36490-3cb4-4ebb-b2fe-fe1663220d77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_first_arg [0.087600s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_missing [0.031797s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_not_supported [0.037149s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_second_arg [0.090784s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_oem_missing [0.042925s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_053_nodes_states_secure_boot_put_admin [0.125778s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5d2ed2f9-3685-41be-9886-1132198dac12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_enabled [0.285776s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_callback_stable_state [0.101910s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue [0.145887s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_fsm_raises [0.066772s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_clean_step [0.085473s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_054_nodes_states_secure_boot_put_member [0.218906s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-84efdb38-46bd-48ad-8850-fceae31311fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_notify [0.076494s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_verify_step [0.055961s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_export_failed [0.029209s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_name_missing [0.033009s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_stable_state [0.070538s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback [0.028906s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_success [0.046191s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback_and_error_handler [0.024889s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_055_nodes_states_secure_boot_put_observer [0.160430s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9b2063e1-09aa-433e-9430-1429a614c4a1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_target_state [0.021963s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_file_not_found [0.034553s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_exception [0.348648s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_release_clears_resources [0.019853s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error [0.022602s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_056_nodes_states_provision_put_admin [0.063067s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-09d125f8-86a2-43b6-9a65-7a8af31e46e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_incorrect_schema [0.046478s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_cancelled [0.028688s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_name_missing [0.038757s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_exists [0.027137s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_no_error [0.021874s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_success [0.039241s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_057_nodes_states_provision_put_member [0.090573s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6de0414d-2494-4a8e-9f59-84340a4f6a35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_exclude_current_conductor [0.033074s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_export_configuration_success [0.032124s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_known_good_state [0.049555s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_058_nodes_states_provision_put_observer [0.076911s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-53429861-8d61-4f9f-8e59-06f161c8e8b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_clean [0.063271s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac [0.049889s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_deploy [0.041792s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_059_nodes_states_raid_put_admin [0.072551s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0d7e1136-eca9-4ad9-b619-694e2d1222e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_operation [0.040784s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_clean_step [0.061385s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_no_need [0.059292s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_verify_step [0.055715s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_060_nodes_states_raid_put_member [0.088779s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c523f8b6-db0b-4c37-b779-2fe14bafd043 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__change_physical_disk_state_attribute_error [0.037970s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_power_on [0.056504s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status [0.058038s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_true [0.048050s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_061_nodes_states_raid_put_observer [0.152378s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-88254aaa-252a-4829-be5a-00dbcb44ef7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_convert_controller [0.057987s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_with_smart_nic_port [0.055081s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_false [0.030320s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_failed [0.053098s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_true [0.032145s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_false [0.043130s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_still_processing [0.060417s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_062_nodes_states_console_get_admin [0.151005s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9e63dfef-8942-48b6-994e-acd600c8b94b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__clear_foreign_config_attribute_error [0.062373s] ... ok {3} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_true [0.082709s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_063_nodes_states_console_get_member [0.083215s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a1b5d414-fece-4c34-85ab-daac89de4f92 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_adopting [0.080128s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_064_nodes_states_console_put_admin [0.069655s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0e2e8e13-b3a1-48ba-883d-9f9821b5bca5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode [0.109023s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_065_nodes_states_console_put_member [0.066097s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-859ebbf2-995b-406d-95f0-e4dd056935bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_non_existent_mode [0.085764s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_no_conversion [0.088616s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_066_nodes_states_console_put_observer [0.076982s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1ca51f6b-c391-4192-ab0c-3da7805a2d17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_valid [0.085911s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_not_raid [0.116183s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin [0.068697s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-09991e8b-447d-4b3a-861d-98d34c0b70a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member [0.068524s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-945339a1-5c04-455e-bd34-ac3d8f2f5108 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_utils.ServiceUtilsTestCase.test_wipe_service_internal_info [0.112825s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_idrac [0.115772s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits [0.052582s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer [0.091928s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-308a9ec6-8e1c-43f1-ac55-9a39827b64ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_empty_instance_traits [0.040139s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_070_nodes_vendor_passthru_get_admin [0.063445s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-35f5227b-8ef5-4ff1-8872-40f96f0c3c47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_from_valid_states [1.265142s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy [0.123589s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_invalid_trait_type [0.065984s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_invalid_type [0.021590s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_missing [0.020032s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_no_instance_traits [0.024326s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy_oem [0.078837s] ... ok {3} ironic.tests.unit.conf.test_conductor.ValidateConductorAllowedPaths.test_abspath_validation_bad_path_raises [0.022757s] ... ok {3} ironic.tests.unit.conf.test_conductor.ValidateConductorAllowedPaths.test_abspath_validation_good_paths [0.027919s] ... ok {3} ironic.tests.unit.conf.test_conductor.ValidateConductorAllowedPaths.test_abspath_validation_good_paths_trailing_slash [0.019046s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__get_storage_controller_invalid_identity [0.059979s] ... ok {3} ironic.tests.unit.db.test_node_inventory.DBNodeInventoryTestCase.test_destroy_node_inventory_by_node_id [0.027033s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__is_realtime_ready [0.054466s] ... ok {3} ironic.tests.unit.db.test_node_inventory.DBNodeInventoryTestCase.test_get_inventory_by_node_id [0.039929s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status [0.036422s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_ok_with_console [0.266911s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_071_nodes_vendor_passthru_get_member [0.282525s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7839cfc5-3e7a-4a33-8a4a-bdf7df0f8428 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status_no_task_monitor_url [0.033708s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_allocations_get_destroyed_after_destroying_a_node_by_uuid [0.087508s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready [0.026542s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_072_nodes_vendor_passthru_get_observer [0.062442s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-80bb933c-f9fe-4036-8467-5f1169c1d929 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_exceeded [0.039082s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list [0.070091s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_fails [0.045837s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_073_nodes_vendor_passthru_post_admin [0.077049s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0041842f-0f77-407e-a1c1-4d3b9edd74af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_impossible [0.048057s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_clean [0.052111s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_non_existing [0.061662s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_074_nodes_vendor_passthru_post_member [0.081464s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-851c2e5d-c7f8-4fbf-979d-0712cde7d119 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_ok_without_console [0.235201s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_deploy [0.061919s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node [0.049941s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_075_nodes_vendor_passthru_post_observer [0.062761s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ad81e6d7-2a00-4a65-bc09-74e7f90db647 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_clean [0.058611s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_already_exists [0.061293s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_076_nodes_vendor_passthru_put_admin [0.065847s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b36a411c-6857-4197-b2cb-18499df032f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_deploy [0.076884s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_instance_already_associated [0.065403s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready [0.047827s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_077_nodes_vendor_passthru_put_member [0.095544s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-895795d7-d14d-4d18-ab78-2d0bd682f4dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready_retryerror [0.046124s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_name_duplicate [0.099625s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_create_configuration [0.039061s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_078_nodes_vendor_passthru_put_observer [0.093511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ebbfeee2-ae43-4646-8ccb-d852c23027a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_delete_configuration [0.033853s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_tags [0.072149s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_with_allocation [0.351322s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_traits [0.059016s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin [0.108628s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bd719d76-6750-4a2e-b810-613e225767b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node [0.085802s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_080_nodes_vendor_passthru_delete_member [0.080119s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0e2e54de-3d42-467a-b615-1eebffb89679 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_by_uuid [0.043547s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_that_does_not_exist [0.032587s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer [0.080352s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4d40f7e5-c3fd-4f32-b2fe-7bc9306c5c47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_firmware_component_list_after_destroying_a_node_by_uuid [0.041828s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_with_source_path [0.270974s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_id [0.036200s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance [0.035865s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_invalid_uuid [0.021636s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_wrong_uuid [0.023835s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_console_raises_error [0.104584s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_name [0.035049s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses [0.040018s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_082_nodes_traits_get_admin [0.240352s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-78bf54ba-d20c-46eb-80ba-8898c9e89570 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_async [0.521122s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_driver_raises_error [0.138834s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_sync [0.063269s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_no_subtasks [0.056124s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_invalid_state [0.095583s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_083_nodes_traits_get_member [0.148568s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d05f6362-ebe3-4a74-a296-739d22d86010 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_multiple_found [0.232552s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_pre_create_configuration [0.061049s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_protected [0.080224s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_not_found [0.034510s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_validate_correct_vendor [0.057543s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_084_nodes_traits_get_observer [0.136444s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-73d8f36d-5432-4ff8-8e1a-db133504d982 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_uuid [0.053396s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_validate_fail [0.088180s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list [0.045010s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method [0.088858s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_chassis_not_found [0.023905s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_description [0.037892s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_085_nodes_traits_put_admin [0.140349s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ff87e578-88ae-4046-a2b3-113d2cb0218e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_managers_fail [0.084356s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_filter_by_project [0.054340s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_worker_pool_full [0.131106s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_includes_traits [0.059668s] ... ok {2} ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_no_managers [0.089437s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_no_traits [0.040692s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_invalid_agent_token [0.099061s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_086_nodes_traits_put_member [0.159871s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e73bf90d-4bb0-4499-98c6-838451d71eca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_oem_not_found [0.078208s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_with_traits [0.058913s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_invalid_agent_token_older_version [0.106599s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_cleaning [0.116979s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_with_filters [0.116100s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_087_nodes_traits_put_observer [0.145729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6f6215fb-ab61-48f4-a80a-738d1cedec0b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_that_does_not_exist [0.027095s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_invalid_newer_version [0.108918s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_defaults [0.037070s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_description [0.031685s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_deploying [0.109131s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_inspection [0.044413s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_088_nodes_traits_delete_admin [0.134032s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-84096ead-289f-4d94-b032-a6235672e309 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_tls_required [0.107259s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_provision [0.034618s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_cols [0.034707s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_cleaning [0.125160s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_filters [0.040364s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_history_get_destroyed_after_destroying_a_node_by_uuid [0.039959s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_089_nodes_traits_delete_member [0.164313s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-aeb4f5fc-26b7-42ec-9947-28f04ca4f95b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_inventory_get_destroyed_after_destroying_a_node_by_uuid [0.041039s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_inventory_updated_for_node [0.028061s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_deploying [0.140134s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_node_provision_state_count [0.040922s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node [0.032784s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_apply_configuration [0.094184s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_090_nodes_traits_delete_observer [0.140042s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-29c381a2-0dfb-4f02-b920-1fe39cc69b6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node_by_uuid [0.034051s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_existent_node [0.031323s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_agent_token [0.342702s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_locked_node [0.027412s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_factory_reset [0.097130s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_reservation [0.040769s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_after_release [0.035862s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_091_nodes_traits_trait_put_admin [0.142269s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0fe774c6-ed81-4aa4-b2cf-c42404ae8582 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_agent_verify_ca [0.112407s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_in_exception_message [0.035122s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_cleaning [0.106507s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_non_existent_node [0.041807s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_of_reserved_node_fails [0.028829s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_agent_version [0.096744s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_092_nodes_traits_trait_put_member [0.134863s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e929c230-cfd3-4dcc-8b3c-f844064441f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_deploy [0.104809s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node [0.062598s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node_reads_reservation_once_sqlite [0.044378s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_no_required_agent_token [0.098412s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_cleaning [0.091903s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node_reads_reservation_twice [0.053113s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_093_nodes_traits_trait_put_observer [0.148181s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e54d8d87-6942-4bf8-958f-a4d6f4e2d230 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_required_agent_token [0.093986s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_deploy [0.066639s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node [0.064745s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node_by_uuid [0.045485s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_cleaning [0.060396s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_without_agent_version_anaconda [0.108969s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_094_nodes_traits_trait_delete_admin [0.131855s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0b26546a-d103-4dda-b945-40521c7ed839 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning [0.065087s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_deploying [0.064170s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning_not_found [0.051052s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_configuration [0.054728s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_095_nodes_traits_trait_delete_member [0.093575s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-445dde68-c9ec-4638-b790-b18e6995ef13 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_without_version [0.105856s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_cleaning [0.048964s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_already_mapped [0.028649s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node [0.078764s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_good [0.036163s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_deploying [0.059989s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_no_free_worker [0.025952s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_node_locked [0.027201s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_cleaning [0.040496s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node_by_uuid [0.078329s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_not_mapped [0.030126s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_deploying [0.040878s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node [0.065063s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_worker_limit [0.041051s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_096_nodes_traits_trait_delete_observer [0.203067s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-abd2475e-06bb-4c16-8f88-50ac4f58b29b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_cleaning [0.050649s] ... ok {1} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action [0.035009s] ... ok {1} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_copies_object [0.024892s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_deploying [0.055956s] ... ok {1} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_object [0.026954s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_associate_and_disassociate [0.118631s] ... ok {1} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_raise [0.028994s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_cleaning [0.059419s] ... ok {1} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_backport_versions [0.033188s] ... ok {1} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action [0.024229s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_deploying [0.051215s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at [0.085546s] ... ok {1} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_object [0.024456s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_097_nodes_vifs_get_admin [0.198500s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-60af5f26-e4f6-4f95-b2c8-fcf9abda8e81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_raise [0.031144s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_cleaning [0.058132s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at_inspecting [0.053996s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at_inspectwait [0.040632s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_deploying [0.050038s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_off [0.078738s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at [0.044342s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_post_boot [0.053163s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_098_nodes_vifs_get_member [0.170524s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b30cbe90-13c3-4e26-a95d-e5d15bcec552 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at_inspecting [0.049856s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_on [0.097543s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at_inspectwait [0.045390s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_pre_boot [0.107922s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node [0.065803s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_instance_already_associated [0.066949s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings [0.054380s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_name_duplicate [0.033656s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_invalid_parameter [0.035664s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_no_provision [0.029689s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_missing_parameter [0.034011s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_099_nodes_vifs_get_observer [0.199924s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a33ae93a-602a-46eb-8638-2b8312469d8f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_not_found [0.023727s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_associated [0.104706s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_provision [0.036316s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_ilo_error [0.073496s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_locked [0.079479s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_unknown_error [0.039688s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_get_properties [0.037416s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_100_nodes_vifs_post_admin [0.150713s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d42ecb45-ee69-46ed-b191-5e68cb873fc9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation [0.071685s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_validate [0.032988s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_forbidden [0.062026s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_deploy_info [0.047028s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_101_nodes_vifs_post_member [0.113923s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-74f2bbdf-5768-4343-b7d0-2cb24f389546 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_in_maintenance [0.060074s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_default_mode [0.053470s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_fix_broken_interface [0.051354s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_invalid_params [0.057312s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_102_nodes_vifs_post_observer [0.091016s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9d3f8547-3fa5-4f76-bf88-53bebeb470c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_from_invalid_driver [0.047806s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_rescue_mode [0.050093s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_http_image [0.039667s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin [0.077754s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-45656c6c-2d11-4647-98fc-46032bfde792 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_hardware_type [0.055528s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_field_with_broken_interface [0.028956s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_https_image [0.037515s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_instance_image_info [0.039541s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member [0.079796s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e58e918d-0e8d-48d7-b5e4-741b5785a11f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer [0.066199s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-27e7552a-a23a-407b-86d8-5cc20830da3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_106_nodes_management_indicators_get_admin [0.063842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3b6a9a30-36f5-4790-8f47-6ae7e481a368 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_instance [0.222031s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_ramdisk [0.036740s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_boot_ramdisk [0.052891s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_local_or_whole_disk_image [0.049387s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_107_nodes_management_indicators_get_member [0.249936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d4075804-30e8-4663-8ba8-445cbd38c108 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_partition_image [0.055051s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_108_nodes_management_indicators_get_observer [0.086081s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-52d11b3d-9b5c-4dd6-a605-8e59c8358047 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image [0.077255s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_109_nodes_management_indicators_component_get_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image_cleaning [0.086676s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_110_nodes_management_indicators_component_ind_ident_get_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_middle_of_clean_step [0.091495s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image [0.074177s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_111_nodes_management_indicators_component_ind_ident_put_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_retries [1.280617s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_112_portgroups_get_admin [0.067521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6b9268bb-669f-4f8e-b847-d2f810270498 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_allowed_state [0.872913s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning [0.089129s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_113_portgroups_get_member [0.074780s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4f665bcd-c357-4921-b47b-d0a668d7641f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_glance_image [0.083644s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_114_portgroups_get_observer [0.067928s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bb757791-ed94-4451-831c-6cd1c103d256 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image [0.065761s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_maintenance [0.188110s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate [0.052819s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_115_portgroups_post_admin [0.081879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a2772cb9-d637-4982-aa73-42e1f217ecf2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_bios [0.064989s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection [0.037180s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_116_portgroups_post_member [0.094101s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d1d47802-bd59-41b4-a4f3-2515912fc691 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_not_allowed_state [0.134550s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection_missing [0.036991s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_117_portgroups_post_observer [0.074838s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6526aed7-7c74-42bd-9472-4ed46f7feb93 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_invalid [0.078049s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_glance [0.083705s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_invalid_driver [0.037973s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_118_portgroups_detail_get_admin [0.063743s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-73cadd07-b72b-4157-a261-5cf29d5c45fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_set_false [0.055423s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver [0.091612s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_with_broken_interface [0.042696s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_119_portgroups_detail_get_member [0.083250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-44c277c5-37f4-4c3b-92b2-2c4f0616105b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_invalid_state [0.030661s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver_exc [0.059357s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_reason_without_protected [0.030102s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_120_portgroups_detail_get_observer [0.067747s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ba9e8aa9-c286-4e61-a386-64c609da0c1f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue [0.064288s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_set [0.066907s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue_no_rescue_ramdisk [0.072930s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin [0.116742s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ea0de9ac-f077-4980-9c8d-f5c6ce5c5ede X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_unset [0.092746s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance [0.057931s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_122_portgroups_portgroup_ident_get_member [0.073379s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1bff0ab5-4dc0-4f7a-a6c7-b066f703a1d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume [0.055831s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios [0.040623s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer [0.070824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-017cc1d9-77d6-463a-ab62-16321c29cf40 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance [0.079744s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin [0.079190s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-361814b5-61f2-431c-811b-bf6a80ad0726 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_invalid_state [0.258145s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member [0.072469s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2432d8f5-9480-4708-b5e5-cea109ae50b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_reason_without_retired [0.028889s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_anaconda_cleaning [0.096660s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_set [0.065267s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer [0.074121s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-481eeaaa-f1be-419c-ab04-097f7d4d85a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_anaconda_deploying [0.076427s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin [0.076191s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3787dab1-1df3-465b-8b0b-e133971b84ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_unset [0.103723s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_anaconda_rescuing [0.109688s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member [0.068370s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1d5dc22f-c874-41ae-bc29-7d40225ade85 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_bios [0.049753s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer [0.067534s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-58fb70c2-be27-492b-87d9-f6b3443b6571 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_boot_from_volume [0.060181s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_cleaning [0.047357s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_130_nodes_portgroups_get_admin [0.066684s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5d82d256-f548-4758-abac-ef0fd08f5f0d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_with_reset_interfaces [0.207636s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_deploying [0.052346s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_131_nodes_portgroups_get_member [0.064214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8d16a3f1-5e76-45cb-ac65-b2bdbf5e7f87 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_rescuing [0.048671s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_allowed_state [0.106772s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate [0.048009s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_132_nodes_portgroups_get_observer [0.079475s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a87006da-2126-4175-b88c-23f1997e60b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate_exc [0.043329s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_133_nodes_portgroups_detail_get_admin [0.069977s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-df86a410-c4e9-4c02-8d87-fcdb10d2f8d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_get_properties [0.045622s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_no_previous_value [0.135261s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_retries_without_log_mock [1.707633s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_exist_ok [0.054024s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_134_nodes_portgroups_detail_get_member [0.080977s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4a5cc486-b38e-4597-a8f1-007c58850dbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_uuid [0.049770s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_not_allowed [0.077502s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_ok [0.054775s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_tags [0.036956s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup [0.047793s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok [0.059607s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_traits [0.050147s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_135_nodes_portgroups_detail_get_observer [0.135348s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f9683713-c55c-4471-b3c6-db84f518e6a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node [0.042573s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_local_gb_zero [0.061788s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_association_with_ports [0.094278s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node_uuid [0.036856s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_failure [0.045783s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_power_off [0.056815s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_136_ports_get_admin [0.096922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6501aa74-5510-4401-82af-9eac83e5b4d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_node_locked [0.048268s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen10 [0.067130s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_137_ports_get_member [0.094639s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-08408e9e-5b46-45b5-acf2-35df61e51b7c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen8 [0.050065s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_active_state_and_maintenance [0.087347s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_deleting_state [0.056112s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_138_ports_get_observer [0.094533s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-66f3684d-c649-4917-b009-0d51921605bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node [0.284723s] ... ok {3} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node_uuid [0.051258s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_inspect_wait_state [0.128541s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_address [0.054053s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_139_ports_post_admin [0.151590s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2f19eebe-756d-4f4e-8439-d668aff69dfd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_validate [0.257653s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_name [0.037442s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_manageable_state [0.098979s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_uuid [0.035917s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates [0.063706s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_140_ports_post_member [0.112683s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-59c0248f-89d6-4765-92a4-19d62302e23a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target [0.063612s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_no_mode [0.064603s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_clear_flag [0.079147s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_duplicate [0.047170s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup [0.032552s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_141_ports_post_observer [0.082559s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b4a89b83-c2b0-4d68-aab0-6c7b9c9884ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_not_empty [0.029412s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_locked [0.046644s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_that_does_not_exist [0.030286s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_error [0.069173s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_uuid [0.030488s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_not_found [0.062676s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_not_supported [0.056805s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_142_ports_detail_get_admin [0.096852s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fe698c29-2cf6-4aa2-abf1-aaf9b8cc9394 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address [0.037850s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_power_on [0.048319s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address_that_does_not_exist [0.031702s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_completed [0.061316s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_143_ports_detail_get_member [0.064184s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f42b2df0-9f4f-4f0f-bae8-6a762b00027f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id [0.036025s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_not_found [0.056656s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id_that_does_not_exist [0.033392s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd [0.067485s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_uuid [0.038764s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_144_ports_detail_get_observer [0.068657s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-da59e0dd-7e44-4011-b221-bf80f328fe49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name [0.036665s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_volume_type [0.040494s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_ilo_error [0.060992s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name_that_does_not_exist [0.039500s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_emit_notification [0.043888s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid [0.039755s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_mask_secrets [0.021984s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_erase_pattern_zero [0.071081s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid_that_does_not_exist [0.031586s] ... ok {1} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_exclusive [0.069263s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list [0.043993s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_device_type_erase_pattern [0.085983s] ... ok {1} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_interface_check [0.041699s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list_sorted [0.051046s] ... ok {1} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_limit [0.030147s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id [0.036549s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_erase_pattern [0.053563s] ... ok {1} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_never_run [0.030102s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id_that_does_not_exist [0.062914s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_format_erase_pattern [0.060611s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup [0.036098s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd [0.056236s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_145_ports_port_id_get_admin [0.380914s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0233fc0c-a14e-4650-a0ee-c20a3eac1194 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_address [0.041375s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_name [0.029393s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd_when_hdd_done [0.066426s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_146_ports_port_id_get_member [0.069839s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0df6df5c-665a-4425-8280-be47c22a3c30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_not_found [0.027303s] ... ok {3} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_uuid [0.024755s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_when_no_drive_available [0.044236s] ... ok {3} ironic.tests.unit.db.test_shard.ShardTestCase.test_get_shard_empty_list [0.021913s] ... ok {3} ironic.tests.unit.db.test_shard.ShardTestCase.test_get_shard_list [0.028173s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_147_ports_port_id_get_observer [0.078744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6fc462ec-d42a-4e58-a6da-060b7ad1eb03 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase [0.053014s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase_ilo_error [0.043415s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_148_ports_port_id_patch_admin [0.066409s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e3f8343f-e4d9-43db-8754-fef40e42c34c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_clean_dhcp_opts [0.070035s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_accelerators.AcceleratorsTestCase.test_accelerators [0.054369s] ... ok {3} ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_get_ip_addresses [0.049101s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_149_ports_port_id_patch_member [0.069867s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c7628e6e-b6ce-4e80-a990-01ea1c94a925 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_architecture.ArchitectureTestCase.test_architecture [0.046040s] ... ok {3} ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_update_dhcp [0.049841s] ... ok {3} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_default_dhcp [0.019837s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_cpu_capabilities.CPUCapabilitiesTestCase.test_cpu_capabilities [0.048975s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_150_ports_port_id_patch_observer [0.076087s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9afb9654-9d13-4cba-9dbd-268b00fa7555 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_dhcp_some_error [0.030702s] ... ok {3} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_only_one_dhcp [0.019056s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_all_valid_data [0.040744s] ... ok {3} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_bad_dhcp [0.019768s] ... ok {3} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_neutron_dhcp [0.029147s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_151_ports_port_id_delete_admin [0.086984s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b7dc17f8-5c00-491b-b740-9952199a3bfb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_none_dhcp [0.021936s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_bad_value_linkagg [0.089240s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address [0.042146s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_152_ports_port_id_delete_member [0.065732s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-37f86d53-4a95-4ae8-90bc-242b31d9745d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_bad_value_macphy [0.063784s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_invalid_ip [0.060671s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_chassis_ids [0.040606s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_ipv6 [0.047662s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_153_ports_port_id_delete_observer [0.103807s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-587daa27-ef24-4ca3-8f93-fdce343390a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_duplicate_tlvs [0.040067s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_with_exception [0.041575s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_invalid_ip [0.038754s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_154_nodes_ports_get_admin [0.068520s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-735ad4a2-3be9-43a7-80d5-2d31e80074fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_portgroup_int_info [0.058667s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_multiple_interfaces [0.037947s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_null_strings [0.042469s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_155_nodes_ports_get_member [0.075483s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9108512e-2a99-412f-9339-5eb927c633e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_ports_int_info [0.058219s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_old_format [0.046285s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_cleaning [0.059584s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_156_nodes_ports_get_observer [0.072045s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9e9f1989-5354-4cf6-ad7a-a32301170eed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_truncated_int [0.039169s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_truncated_mac [0.039954s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_157_nodes_ports_detail_get_admin [0.072803s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a018d83c-05c8-4e37-a040-041834d60dd0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup [0.078609s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_unhandled_oui [0.038859s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup_with_exception [0.048120s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_unhandled_tlvs [0.038028s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_158_nodes_ports_detail_get_member [0.066164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e77041a0-5bcf-477b-b7cd-103dc7fb8ea9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_provisioning [0.061926s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_physical_network.PhysicalNetworkTestCase.test_physical_network [0.063177s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_159_nodes_ports_detail_get_observer [0.076979s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f23a0745-fc21-4b39-bf22-c3e68497da47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_tenant [0.048214s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.UpdatePortsTestCase.test_keep_added [0.072082s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_with_exception [0.049478s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_160_portgroups_ports_get_admin [0.077020s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-563bb151-df60-4f27-873c-33375917f1c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses [0.047551s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.UpdatePortsTestCase.test_keep_all [0.089921s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_161_portgroups_ports_get_member [0.071830s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f06c6f46-2d74-496f-aa30-89aa3ee087e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses_for_port_and_portgroup [0.055237s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.UpdatePortsTestCase.test_keep_present [0.073623s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp [0.051086s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_162_portgroups_ports_get_observer [0.075303s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c859bc26-2478-4bc1-aa57-ebf34191a810 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_fails [0.054119s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.UpdatePortsTestCase.test_keep_pxe_enabled [0.066889s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_163_portgroups_ports_detail_get_admin [0.070307s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4b296ecd-9721-441c-8c3e-1c6990cdde06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_no_vif_data [0.062245s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_ramdisk_error.RamdiskErrorTestCase.test_ramdisk_error [0.051250s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.GetInterfacesTestCase.test_get_interfaces [0.026453s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_164_portgroups_ports_detail_get_member [0.081788s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-74e2e85e-4348-4acd-b4b6-cac0a48fb956 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_callback_endpoint [0.034444s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_set_sleep_and_fake [0.070623s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_callback_endpoint_mdns [0.025622s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_165_portgroups_ports_detail_get_observer [0.067303s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-466a1a25-9922-4312-acac-79cb836af4ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_callback_endpoint_no_loopback [0.025014s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_some_failures [0.055378s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_callback_endpoint_override [0.026087s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_166_volume_get_admin [0.067903s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f5c7d1dd-8515-4be6-8b8a-d5b29cb73b3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_properties [0.036493s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_validate_ok [0.025739s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_unset_sleep_and_fake [0.088608s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareAbortTestCase.test_abort_error [0.027669s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_167_volume_get_member [0.065037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-978e4eaf-7ded-4260-8005-2591e71fb887 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareAbortTestCase.test_abort_ok [0.026620s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts [0.061754s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_168_volume_get_observer [0.066210s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1105e24f-4701-4e6a-98b3-4d01e5e7a954 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_custom_params [0.063555s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v4_and_v6 [0.086117s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_169_volume_connectors_get_admin [0.083248s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2209f89e-78b2-417f-a496-fbaf6370454e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_error [0.069275s] ... ok {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v6 [0.060565s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_170_volume_connectors_get_member [0.064263s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ffa91687-e254-4427-9a12-80b19d0f84d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_with_exception [0.054910s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_bootloader_none [0.029487s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_bootloader_none_by_arch [0.024241s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_171_volume_connectors_get_observer [0.088162s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c4491245-0e35-472d-b540-b93dcdc9ec71 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_simple [2.076926s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_172_volume_connectors_post_admin [0.076509s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-98c9de9d-ba6d-46e7-8969-5d26ee28a31a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_stop [0.058520s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_fast_track [0.255233s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits [0.027100s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits_replace [0.026514s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_173_volume_connectors_post_member [0.080308s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1d82338a-21d9-4b2e-bfa2-5a9849562c43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_False [0.030824s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_fast_track_via_driver_info [0.070930s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_True [0.025781s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy [0.217575s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_false [0.024735s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_config [0.028604s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_true [0.024611s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_ok [0.065687s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_config_by_arch [0.025565s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_174_volume_connectors_post_observer [0.109269s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7e42260f-3000-4638-a9c6-f9dfe3374434 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_boot_mode [0.034540s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_deprecated [0.027858s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_require_managed_boot [0.041445s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_power_state [0.035261s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso [0.028933s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_unmanaged_error [0.041001s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_secure_boot [0.025534s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso_deprecated [0.024825s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_exc [0.026768s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_clean [0.030029s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_175_volume_volume_connector_id_get_admin [0.118461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/9365ac85-0ab3-4919-b7fd-1ad2bbaf27ca WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ee6e69c3-8c35-4a07-9ad7-58c5cc8fa6f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 9365ac85-0ab3-4919-b7fd-1ad2bbaf27ca could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_unmanaged_ok [0.053850s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue [0.035944s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_deploy [0.037590s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_validate_ok [0.039131s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_config [0.026373s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_service [0.030994s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_iso [0.024794s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_allocation [0.025688s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_176_volume_volume_connector_id_get_member [0.086640s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/a8dd9895-0351-4785-bc62-dc8276280cd9 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-172372bb-3b2d-4121-a28b-9359b5d0c696 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector a8dd9895-0351-4785-bc62-dc8276280cd9 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_validate_require_managed_boot [0.062724s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_node [0.035107s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_exception [0.048134s] ... ok {2} ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect [0.040272s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_port [0.035170s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_allocation [0.028778s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_false [0.062067s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_177_volume_volume_connector_id_get_observer [0.102234s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/41c83cb4-19a1-46b7-814b-fc9a017d4ad9 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-70ee9e48-7d6f-4393-895f-6a820c125a2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 41c83cb4-19a1-46b7-814b-fc9a017d4ad9 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_node [0.027059s] ... ok {2} ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_empty [0.070608s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_true [0.051479s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_portgroup [0.031835s] ... ok {2} ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_error [0.050818s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_connector [0.032060s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_178_volume_volume_connector_id_patch_admin [0.096868s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/302ff314-5865-4e5b-810f-0422568e9edc WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-03caf7aa-bbf2-4d0d-ad81-a4bf1ba573cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 302ff314-5865-4e5b-810f-0422568e9edc could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_create [0.074227s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_target [0.038787s] ... ok {2} ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_invalid_input [0.087139s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_179_volume_volume_connector_id_patch_member [0.077530s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/552c8847-b2c9-46b9-8087-430b7639de50 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5be4f296-4206-46fa-9ebb-b94bcb47eae7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 552c8847-b2c9-46b9-8087-430b7639de50 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_glance_image [0.078092s] ... ok {2} ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_more_socket [0.041123s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_180_volume_volume_connector_id_patch_observer [0.078124s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/2a32495f-94d5-4ed4-a219-31d26e5218e6 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-10ff3ef3-2fb9-489f-8a92-6a8c15b59e29 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 2a32495f-94d5-4ed4-a219-31d26e5218e6 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_http_url [0.075320s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_clean_up_instance [0.061766s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_swift_image [0.067406s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_instance [0.071818s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__parse_deploy_info [0.036525s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_with_backup_bios [0.057269s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_driver_info [0.061529s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_without_backup_bios [0.064356s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_instance_image_info [0.084670s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test__configure_vmedia_boot [0.083172s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_181_volume_volume_connector_id_delete_admin [0.323745s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/8ce1a803-48a5-4b4a-ba9a-efc8b8c265d0 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dd51355f-2498-44cf-bf9f-f4a68749ac37 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 8ce1a803-48a5-4b4a-ba9a-efc8b8c265d0 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy [0.087110s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_clean [0.504190s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_inst_info [0.041837s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance [0.101648s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot ... SKIPPED: bug #2025424 {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy [0.062321s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_182_volume_volume_connector_id_delete_member [0.132782s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/0add4886-e3e7-4819-8723-fc6f0199bf48 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-88fed1f2-327e-4a55-9b4c-85f93ba6e0d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 0add4886-e3e7-4819-8723-fc6f0199bf48 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy_with_deploy_steps [0.023822s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on [0.059687s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_rescue [0.024841s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_service [0.026362s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on_inst_info [0.061142s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_183_volume_volume_connector_id_delete_observer [0.078980s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/68d8ea1c-1228-448a-ab05-c2ed3d82b753 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6c2b6434-8cf6-4d10-91e0-d19efc8f9e20 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 68d8ea1c-1228-448a-ab05-c2ed3d82b753 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_tear_down [0.028684s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_unrescue [0.026756s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot_false [0.139625s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_driver_vendor_passthru [0.032335s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance [0.090218s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_184_volume_targets_get_admin [0.079755s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-914a8561-340d-4116-b433-ff6c82f4d64d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_boot_device [0.024736s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_conductor_for [0.025521s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_console_information [0.030441s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_185_volume_targets_get_member [0.064896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7a243e0a-1595-4c1c-92b5-964402a6b9f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_without_secure_boot [0.133057s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_properties [0.026374s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume [0.096725s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_vendor_passthru_methods [0.031116s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios [0.045214s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_186_volume_targets_get_observer [0.077922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ef89d23f-4bde-4352-a7ca-e780cd5860bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_indicator_state [0.027360s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_ramdisk [0.083897s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_vendor_passthru_methods [0.030791s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance [0.064383s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_with_token [0.033719s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_187_volume_targets_post_admin [0.079077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-af5ca664-b3bd-4711-80fb-b40d3ced12f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_raid_logical_disk_properties [0.024179s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_anaconda_cleaning [0.057015s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic [0.034121s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_partition_image [0.104262s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic_no_conductors [0.023879s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_188_volume_targets_post_member [0.070424s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b7f15297-af2d-431e-a90c-151a73ded412 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_anaconda_deploying [0.061960s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_boot_devices [0.033810s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_indicators [0.024222s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_anaconda_rescuing [0.048864s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_189_volume_targets_post_observer [0.083476s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-25edd43f-acef-4675-9d15-1e150dcd6456 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_doesnt_cache [0.040249s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image [0.116955s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot ... SKIPPED: bug #2025424 {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_bios [0.043945s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_doesnt_cache [0.037875s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_known_driver [0.025585s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_190_volume_volume_target_id_get_admin [0.081482s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/d03ba164-4a54-49af-823e-6018e7348edc WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6fad0d26-fa1d-4b6a-b2c0-34fb56cee021 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target d03ba164-4a54-49af-823e-6018e7348edc could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_boot_from_volume [0.058931s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_unknown_driver [0.026658s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot_false [0.106426s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_known_driver [0.024800s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_cleaning [0.046158s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_unknown_driver [0.030206s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_191_volume_volume_target_id_get_member [0.109158s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/e8828b7a-c7f6-475a-9f94-3210981ccc7f WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ed7cac4c-6213-4e18-8d2e-10bbc8378fda X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target e8828b7a-c7f6-475a-9f94-3210981ccc7f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_without_secure_boot [0.072752s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat [0.042087s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_deploying [0.068379s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat_agent_token [0.030795s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inject_nmi [0.026662s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning [0.073551s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_rescuing [0.085057s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inspect_hardware [0.042746s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list [0.028064s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_192_volume_volume_target_id_get_observer [0.135036s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/a1fb25b7-880e-4689-ade1-a0557290e65d WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d216b4b0-3478-45c7-8dd8-3d45c4f02319 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target a1fb25b7-880e-4689-ade1-a0557290e65d could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call [0.033903s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_deploying [0.076399s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_expected_exception [0.033903s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty [0.052530s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch [0.024895s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_rescuing [0.063437s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty_no_path [0.043766s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_193_volume_volume_target_id_patch_admin [0.094381s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/4557be9f-b054-43af-9c1d-ed1951846b3f WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a596652a-4c6a-4c3a-a796-6a456d6a7781 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 4557be9f-b054-43af-9c1d-ed1951846b3f could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch_with_rpc_disabled [0.030349s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_none [0.026901s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_no_conductor_with_rpc_disabled [0.022105s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_string_type [0.024392s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_with_rpc_disabled [0.024768s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_floppy_image_name [0.026625s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast [0.035003s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast_error [0.024251s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image [0.050522s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_194_volume_volume_target_id_patch_member [0.125401s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/a4aeaf54-c273-4890-9418-d6bcccfaecc9 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e13d0c83-457a-4bd4-b9f1-8eb09a48788f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target a4aeaf54-c273-4890-9418-d6bcccfaecc9 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action [0.024987s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_not_deploying_not_cleaning [0.154577s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action_invalid_version [0.027121s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_remote_image_share_type_values [0.027680s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image_use_webserver [0.056021s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions [0.031039s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions_invalid_version [0.024832s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate [0.052596s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_None [0.065307s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions [0.025900s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_class_action_versions_invalid_version [0.021418s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue [0.047748s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_195_volume_volume_target_id_patch_observer [0.156100s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/bd507a83-d799-4ece-8715-492ebc8be005 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-09fd70a6-288c-4f7f-a2f1-0c7a95677f30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target bd507a83-d799-4ece-8715-492ebc8be005 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_false [0.045076s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits [0.024717s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits_all [0.027421s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_rpc_disabled [0.025377s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_invalid [0.060703s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk [0.078205s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_serialized_instance_has_uuid [0.022919s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_raises_ilo_error [0.041773s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_196_volume_volume_target_id_delete_admin [0.110776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/386accdb-b924-401a-897c-65db0ccc645b GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-653f6170-45dc-4914-830b-e34a6406e37a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 386accdb-b924-401a-897c-65db0ccc645b could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_boot_device [0.030378s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_ramdisk_not_exist [0.049126s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_console_mode [0.024120s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true [0.041354s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_indicator_state [0.023784s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id [0.055418s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true_default [0.049107s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_target_raid_config [0.037723s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia [0.026110s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_node [0.026224s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_197_volume_volume_target_id_delete_member [0.131965s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/87092014-a91e-4922-9f8f-e6a671553a2d GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-29197b8c-f2c6-47a5-9508-0527abbcbb24 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 87092014-a91e-4922-9f8f-e6a671553a2d could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_portgroup [0.064451s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia_fails [0.030767s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_port [0.057811s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_portgroup [0.030685s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot [0.063635s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_raise [0.078358s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_connector [0.041210s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_target [0.024055s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_198_volume_volume_target_id_delete_observer [0.148766s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/e27659cc-b5e3-417d-9b38-97f113503ea7 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a076964f-365c-4aaf-9ef2-a99412c656e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target e27659cc-b5e3-417d-9b38-97f113503ea7 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_validate_driver_interfaces [0.037634s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports [0.103936s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vendor_passthru [0.027105s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_199_nodes_volume_get_admin [0.079846s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-67bd2918-f25c-448b-9298-c3d7a0e9cb2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_attach [0.033417s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports_portgroup [0.069988s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_detach [0.048356s] ... ok {1} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_list [0.037152s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network [0.065820s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_200_nodes_volume_get_member [0.099576s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0f66fc85-aa94-4adf-8cc0-7ba64b28f63e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc [0.270884s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc_resource_not_found [0.046695s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_for_webserver [0.050664s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network_from_node [0.124319s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_201_nodes_volume_get_observer [0.145135s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8543e613-a5da-4d5e-90f0-da72e062bbda X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates [0.042131s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network [0.063495s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_default [0.039560s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_raises_ilo_error [0.057400s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_202_nodes_volume_connectors_get_admin [0.129636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-30342cbc-218d-4493-bf0b-7cc452e9d711 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift [0.033704s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift_throws_error_if_swift_operation_fails [0.031790s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server [0.025427s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server_fails [0.026639s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_203_nodes_volume_connectors_get_member [0.136633s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fd4bec59-990e-4ce3-a94f-f6338b1dc3b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_destroy_floppy_image_from_web_server [0.046729s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_file_url [0.039791s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_http_url [0.037996s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_204_nodes_volume_connectors_get_observer [0.124463s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-50b6da35-cc64-4185-970d-bc61528178f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices [0.056118s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices_raises [0.048306s] ... ok {1} ironic.tests.unit.conductor.test_servicing.DoNodeCleanTestChildNodes.test_do_next_clean_step_with_children [0.631999s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode [0.026150s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode_fail [0.028477s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_205_nodes_volume_targets_get_admin [0.139131s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5e92c0cc-e3e9-4c87-a51a-32a932fbf2f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile [0.027881s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile_boolean [0.043192s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network_from_node [0.550805s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_provisioning_network [0.042408s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_snmp [0.055853s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_206_nodes_volume_targets_get_member [0.124395s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dd6059d4-56b7-4471-b77c-eea2425a543f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_rescuing_network [0.048214s] ... ok {1} ironic.tests.unit.conductor.test_servicing.DoNodeCleanTestChildNodes.test_do_next_clean_step_with_children_by_uuid [0.240607s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode [0.082531s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_get_node_network_data [0.068373s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_bios [0.038343s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_207_nodes_volume_targets_get_observer [0.129427s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9ab5f80f-7d69-432e-bda9-7e1dea8015ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps [0.069892s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_init_no_cleaning_network [0.040612s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_fail [0.053148s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_only_enabled [0.052244s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_208_drivers_get_admin [0.065690s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ed055a09-6393-408b-8e95-151f66692b60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network [0.070749s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_no_override [0.043331s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_not_supported [0.073341s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_disable [0.047076s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_209_drivers_get_member [0.087647s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-fb32a9f3-fe30-4f79-9f71-6d38d59a74f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network_from_node [0.074028s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state [0.057053s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_fail [0.043812s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_provisioning_network [0.066994s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_fail [0.081587s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_not_supported [0.040771s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_210_drivers_get_observer [0.114129s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-1192dbc0-6081-453c-910b-a91ca6471db6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_rescuing_network [0.044908s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_ok [0.044517s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift [0.041019s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate [0.059552s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_notfound_exc [0.044329s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_211_drivers_driver_name_get_admin [0.076919s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-a3528d49-b161-4eb8-a6ed-57cc6855d4b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_unsorted [0.079462s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_operror_exc [0.041993s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_from_node [0.072454s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps [0.050304s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_web_server [0.046766s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_list [0.025728s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_212_drivers_driver_name_get_member [0.105016s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-69f13f18-1b0b-4d21-b67e-f9b601f6b0e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection [0.069207s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_str [0.027093s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_disable_ramdisk [0.071184s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode [0.028017s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection_exc [0.048492s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_with_IloOperationError [0.026055s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_get_steps_exception [0.049899s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_without_set_pending_boot_mode [0.027081s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_attach [0.060634s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_213_drivers_driver_name_get_observer [0.133666s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-9bf91af5-6026-4b13-95ed-71d0be886428 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_invalid_arg [0.047372s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode [0.050258s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_detach [0.048662s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_missing_required_arg [0.049021s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_fail [0.049275s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_list [0.053300s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_214_drivers_properties_get_admin [0.107568s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-3b5f14e4-98b9-425c-a1ed-288c227f68b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_no_steps [0.068868s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_not_supported [0.063377s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_port_changed [0.067449s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_false [0.050045s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_215_drivers_properties_get_member [0.080044s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-fe5cb055-cbd5-4ee3-952b-c09c36e18a62 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning [0.062112s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_true [0.050484s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_not_supported [0.118787s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_216_drivers_properties_get_observer [0.074715s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-5716b280-c7a0-4f0e-a379-7292c27ff648 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_ilo_error [0.044832s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning_failed [0.086262s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_not_supported [0.044606s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_requires_ramdisk [0.104572s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_scheme_http [0.048199s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia [0.048838s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_reserved_options [0.083511s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying [0.140853s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_parameters [0.044017s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test_set_node_cleaning_steps_automated [0.065844s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying_failed [0.071062s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_swift [0.066374s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test_set_node_cleaning_steps_manual [0.076751s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_url [0.061658s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_cleaning [0.088895s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_without_params [0.042354s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_all_steps [0.045949s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode [0.063782s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_disable_core_steps [0.067205s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin [0.441815s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c530d10f-7028-47b7-9ca2-ef0b713d90f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_capabilities_exist [0.049308s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_deploying [0.158222s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_and_user_steps [0.072395s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_instance_info_exists [0.044118s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_steps [0.046603s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_legacy [0.065649s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member [0.132432s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c0babb2c-c326-4b46-8fba-7e9fc0030a95 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_error [0.049447s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_prop_boot_mode_exist [0.042695s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_fast_track [0.125923s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_steps [0.049597s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown [0.048167s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_immediate [0.070713s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown_except [0.043588s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_driver_steps [0.072044s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer [0.143490s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-f3dccf5e-3e0b-44ab-9af8-db27c601f666 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_use_def_boot_mode [0.056153s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_on_reset [0.076867s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_user_steps [0.066349s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_fail [0.043787s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_user_and_driver_steps [0.058797s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_no_apply_time_attr [0.066289s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_driver_steps [0.054611s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin [0.170547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-2900d768-acb8-42c6-a7f6-432eb15b8768 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_template_steps [0.048654s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_no_supported_apply_times [0.063943s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_skip_missing [0.068309s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_template_and_driver_steps [0.050619s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member [0.166301s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ad58636d-e5b4-4be2-96c8-8f589262fcc9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_not_supported [0.125184s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_driver_steps [0.052132s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_ipmi_properties [0.375548s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_template_steps [0.059391s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer [0.145011s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-dfc397cf-7dda-46fc-9541-a45f0ac4689e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings [0.139836s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deploy_steps_unsorted [0.060015s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_redfish_properties [0.097282s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values [0.035531s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps [0.061182s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_no_bios [0.080438s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_invalid_param [0.035566s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_no_param [0.027604s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps_only_enabled [0.044497s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_223_drivers_vendor_passthru_get_admin [0.143639s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-3294a85b-e456-411f-9fcf-104917dbc1f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum [0.036731s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_noop [0.073241s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates [0.053255s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_sha256 [0.045173s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_sha512 [0.029986s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates_no_traits [0.062459s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_steps_from_deployment_templates [0.043721s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_failed_validation [0.055539s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_nonexistent_file [0.027818s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_224_drivers_vendor_passthru_get_member [0.177947s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-72bec38c-3e68-4b64-878a-62a5281094e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps [0.050339s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_ca_file_and_snmp_inspection_true [0.027135s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_cafile [0.029732s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_core [0.060391s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_multiple_params [0.034730s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_port [0.030461s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_225_drivers_vendor_passthru_get_observer [0.109408s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-4c31d605-e1eb-48ec-84ef-f760ea570630 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_non_core [0.051484s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_timeout [0.026753s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_duplicates [0.058032s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_value_verify_ca [0.041395s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_check_bios_attrs [0.366306s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_226_drivers_vendor_passthru_post_admin [0.085710s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-5cbcbf0c-000e-4bd2-8ad4-93d9498259cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_address [0.035316s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_get_steps_exception [0.063424s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_multiple_params [0.026729s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_password [0.024724s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_227_drivers_vendor_passthru_post_member [0.073175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-92c32fd9-1ecd-4768-b0aa-a86290290440 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_fail [0.083630s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_username [0.032237s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_invalid_arg [0.061611s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_dir [0.040300s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_file [0.032390s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_228_drivers_vendor_passthru_post_observer [0.094055s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-9c65af58-4a98-4a59-a5de-4ab4c0cb6fce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_not_supported [0.089619s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_missing_required_arg [0.077389s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_false [0.027473s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_no_steps [0.062446s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_true_raises [0.043024s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_229_drivers_vendor_passthru_put_admin [0.077842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-6d744069-b880-4ead-bd81-338ac992776c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_integer_auth_protocol [0.029581s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_cleaning [0.112688s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_not_supported [0.060044s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_auth_protocol [0.030775s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_priv_protocol [0.028642s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_230_drivers_vendor_passthru_put_member [0.082659s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b90ba6ad-875d-4a71-ad5e-7185aaa6e20c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_override_core [0.053459s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_no_auth_priv_protocols [0.032594s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_skip_missing [0.054438s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_false [0.051226s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_231_drivers_vendor_passthru_put_observer [0.092333s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ebcfba8b-d499-4d2c-afda-b83df3ad13e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_deploying [0.129223s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_true [0.029869s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps [0.061683s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_default_value [0.027201s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin ... SKIPPED: not updated for scope testing {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_string_false [0.042379s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps_skip_missing [0.069690s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict [0.040025s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_cleaning [0.149779s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer ... SKIPPED: not updated for scope testing {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_excluded_capability [0.027447s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_already_present [0.049906s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_gpu_capabilities [0.025339s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_capabilities_ok [0.029558s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off [0.062026s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail [0.041487s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_234_nodes_bios_get_admin [0.114640s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-63a6e258-4935-4ed2-a114-dd2f2d795b8c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_invalid_format [0.030269s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_deploying [0.143924s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_mac_invalid_format [0.029867s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off_to_none [0.090598s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_empty [0.025417s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_not_dict [0.026215s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_235_nodes_bios_get_member [0.098575s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b6d21bb7-5643-4da3-9e69-5f8d27e60a1d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_ok [0.027053s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_essential_keys_fail_missing_key [0.026470s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_ok [0.028027s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_fast_track [0.150133s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_236_nodes_bios_get_observer [0.117657s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4c8c5bea-dbf8-4736-bb78-e46342560388 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_clean [0.046886s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_get_properties [0.063765s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_deploy [0.040890s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin [0.083284s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-85340faf-600d-41ef-96df-1af7cf746a0f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_not_supported [0.041312s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_ok [0.043487s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_boot_mode [0.320183s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_post_configuration [0.116461s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_238_nodes_bios_bios_setting_get_member [0.080445s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d32f2996-c744-4ebe-9c6d-a74fcf79a37f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_clean [0.061086s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_secure [0.062621s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_validate [0.081571s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer [0.075718s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4850936b-d806-4334-b989-0b30b637f877 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_deploy [0.066570s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_noneness [0.102431s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_clean [0.079127s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_240_conductors_get_admin [0.098500s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-51984932-fa99-4d58-a4a6-b57cded83d49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_create_port_when_its_state_is_none [0.121666s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_retreive_and_set [0.086589s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_deploy [0.080468s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_241_conductors_get_member [0.105260s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-29ae937e-4f30-4973-ad3d-76784b7e1fea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_properties [0.077148s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_unsupported [0.046339s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_clean [0.058800s] ... ok {1} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout [0.038140s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_pxe_port_macs [0.071194s] ... ok {1} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout_shared_lock [0.051980s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_242_conductors_get_observer [0.093441s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ab2c0846-dbba-4ed6-aed9-7b02597991bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_deploy [0.065618s] ... ok {1} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler [0.045896s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_clean [0.052715s] ... ok {1} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_ironic_exception [0.034207s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_cpu_arch [0.096206s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_deploy [0.057481s] ... ok {1} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_random_exception [0.070494s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_243_conductors_hostname_get_admin [0.150388s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-77fe21ae-9862-4c39-8e3e-11fb29575901 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_memory_mb [0.077732s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_clean [0.062784s] ... ok {1} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_no_cleanup [0.052820s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_deploy [0.062894s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_244_conductors_hostname_get_member [0.096403s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6a25ac27-6682-456e-91b3-e5f70d3a38d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_not_deploy [0.052654s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_boot_mode [0.104485s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_cleaning [0.036871s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_deploying [0.031616s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license [0.085546s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_245_conductors_hostname_get_observer [0.083537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b1586243-c8c3-4c24-89c6-ee5d64ab91c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler [0.036105s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu_count [0.123894s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanfail [0.042701s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_246_allocations_post_admin [0.085093s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9122ed97-5703-4835-abc1-273ec25399b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanwait [0.049390s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_247_allocations_post_member ... SKIPPED: This endpoint's behavior supports allocation creation as a member with the new Role Based Access Control changes. Thus this test cannot both ensure prior and post-change behavior as it is actually valid moving forward. {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_manual [0.051653s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license_no_or_invalid_format_license_key [0.213022s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_fail [0.043578s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_teardown [0.035807s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu_frequency [0.221402s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_tear_down_error [0.047265s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_248_allocations_post_observer [0.181188s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-86afa47c-07b7-48e1-967e-71932828cb62 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout [0.038094s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate [0.144613s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout_handler_call [0.032904s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout [0.039431s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu_instruction_set [0.129275s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_known_exc [0.034226s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_fileurl [0.121101s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_unknown_exc [0.034358s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_servicewait_timeout [0.033348s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_249_allocations_get_admin [0.181138s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-51a3425b-b181-47c9-834b-70b4dfb02c1f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu_model [0.114181s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_servicewait_timeout_handler_call [0.033474s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_no_worker [0.033984s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_httpurl [0.121695s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_other_error [0.062023s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_250_allocations_get_member [0.144116s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dd02a4fa-e7f4-4d55-b3f3-48f9ccd6f886 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_no_worker [0.034948s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_other_error [0.032146s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_url_exception [0.123790s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler [0.038568s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_251_allocations_get_observer [0.120203s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e437cd29-705b-466c-a669-fca7e6f96de9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_bad_state [0.037819s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_ironic_exc [0.029608s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target [0.131888s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_other_exc [0.035929s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_252_allocations_allocation_id_get_admin [0.067473s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/fdf8c078-476b-4a27-a741-1333fa66654e WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2b2f531b-a0b3-4d9e-b50c-37396655c340 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation fdf8c078-476b-4a27-a741-1333fa66654e could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_set_failed_state_false [0.030261s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_253_allocations_allocation_id_get_member [0.060438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/dc589e34-9519-4d0a-97b0-1655ca583eb8 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6e9ab3fa-addf-4b34-8013-ef60bb221cca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation dc589e34-9519-4d0a-97b0-1655ca583eb8 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler [0.040306s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_no_fail [0.027747s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_failed [0.133452s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_no_teardown [0.036646s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_254_allocations_allocation_id_get_observer [0.076586s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/65025c3d-abb8-4aa6-bdd1-afbc3e418d86 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4b9b28ec-fd1c-47f5-aa7e-9e19e8563459 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 65025c3d-abb8-4aa6-bdd1-afbc3e418d86 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_servicefail [0.030932s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_servicewait [0.030082s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_local_gb [0.537645s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_255_allocations_allocation_id_patch_admin [0.072597s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/bcded820-e7b6-4a37-84fe-59b922b396cf WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e5eaf659-71ce-4c7a-978a-19816486a04c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation bcded820-e7b6-4a37-84fe-59b922b396cf could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_tear_down_error [0.037447s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_no_worker [0.046458s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_256_allocations_allocation_id_patch_member [0.088999s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/fb500cd0-a3c9-4d6b-95cd-cd350006e185 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ad7fe5f0-6f96-4c07-a103-e1b8f82074a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation fb500cd0-a3c9-4d6b-95cd-cd350006e185 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_other_error [0.034128s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_memory_mb [0.124807s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_no_worker [0.041919s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_other_error [0.033027s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_no_worker [0.036647s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_nics [0.117741s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_other_error [0.032735s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_servicing_error_handler_no_worker [0.045284s] ... ok {1} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_servicing_error_handler_other_error [0.040598s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_simple_storage [0.119438s] ... ok {1} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_cleaning [0.028449s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_257_allocations_allocation_id_patch_observer [0.287458s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/991b663b-e170-4b4a-9cf2-e0064abfa129 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6c3a2dcc-6704-4074-ac43-2776240f7a39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 991b663b-e170-4b4a-9cf2-e0064abfa129 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_inspecting [0.026552s] ... ok {1} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_none [0.033583s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_258_allocations_allocation_id_delete_admin [0.062316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/68ccb4b3-f907-40ed-a3c0-1fa762caad9d GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-78c9da86-68b4-4366-95d4-b56cbb060af6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 68ccb4b3-f907-40ed-a3c0-1fa762caad9d could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_in_bios [0.532239s] ... ok {1} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_provisioning [0.029795s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_simple_storage_and_storage [0.118748s] ... ok {1} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_rescuing [0.033102s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_259_allocations_allocation_id_delete_member [0.066803s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/dc13ffe6-9e2b-4ebf-8068-5da94bcef7d4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4398a312-cecd-4bb6-b586-3c7712f75010 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation dc13ffe6-9e2b-4ebf-8068-5da94bcef7d4 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_tenant [0.027917s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_secure_boot_keys [0.113402s] ... ok {1} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps [0.041996s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_260_allocations_allocation_id_delete_observer [0.061131s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/aa020e82-24fb-4382-8c7f-5bd15ddf264f GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b5f45410-bd6c-443c-97b3-6477892ece39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation aa020e82-24fb-4382-8c7f-5bd15ddf264f could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_storage [0.114298s] ... ok {1} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_no_skip [0.068951s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_261_nodes_allocation_get_admin [0.070577s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f3b69fe4-ff70-4761-9846-264f6a219f42 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_unset_clean_step [0.041962s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_create_csr [0.121113s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_262_nodes_allocation_get_member [0.070848s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0ddb67d8-3022-42f4-bec5-788e381f99a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_system_vendor [0.123338s] ... ok {1} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps [0.084718s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_263_nodes_allocation_get_observer [0.070302s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cd0c9c4f-564d-42c7-9b90-b4603428181b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_flash_firmware_sum_mode_with_component [0.131868s] ... ok {1} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_no_skip [0.084786s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ok [0.124975s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_264_nodes_allocation_delete_admin [0.072261s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9c4b6c2c-c9c9-4846-b2bc-0102bd1610df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_unset_deploy_step [0.050007s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_265_nodes_allocation_delete_member [0.062268s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-99026424-335f-435b-8859-b07791c6e4fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_steps_exception [0.048585s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_fail [0.129657s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_preserve_boot_mode [0.127118s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history [0.033187s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_266_nodes_allocation_delete_observer [0.077797s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d044236d-80b9-4826-8d87-459910deb8af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_disaled [0.065969s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_next_boot [0.121462s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_conf_update_pxe_disabled_false [0.126748s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_267_deploy_templates_post_admin [0.117420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d127bbe2-a522-4121-9559-f87f983befb4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent [0.116411s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_268_deploy_templates_post_member [0.081017s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2681e217-d98e-4c01-8467-437918ba1e8b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_empty_pxe_port_macs [0.138422s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_269_deploy_templates_post_observer [0.078746s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8e337cb1-85ee-448b-88dc-29fa4bc96383 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_noop [0.252755s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent_fail [0.122700s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_error_severity [0.032227s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_270_deploy_templates_get_admin [0.067322s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a87da7fb-cc2b-44e1-be6f-28f93b39f02a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_user [0.033185s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_no_mac [0.129496s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode [0.098987s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_adopting [0.052448s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_271_deploy_templates_get_member [0.072471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1e454a70-ea6b-4a99-9120-2df8c8417442 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_always [0.039756s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_none_pxe_port_macs [0.110304s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode_fail [0.085571s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_default [0.051328s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_272_deploy_templates_get_observer [0.110554s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6854d88c-e265-47a1-b65f-c36d2e3efea8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_never [0.050197s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_non_existent_device [0.042759s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_properties [0.139835s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin [0.113251s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/d7837237-098f-4d19-a824-fa763e0b0558 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-43d5cbad-cfe7-4733-b359-7eaf52722f3a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_valid [0.047490s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_disabled [0.171783s] ... ok {1} ironic.tests.unit.conf.test_auth.AuthConfTestCase.test_add_auth_opts [0.023315s] ... ok {1} ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up [0.021175s] ... ok {1} ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up_with_data [0.031379s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member [0.117151s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/068f5c4c-b108-4ff1-8ffb-9e1a508a2bb3 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4539f761-6df7-4a65-9d4a-ad23250b4633 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_default [0.053018s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_sensor_data [0.149824s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_enabled [0.150831s] ... ok {1} ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_false [0.043456s] ... ok {1} ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class [0.021712s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer [0.097018s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/f0063006-deb9-4c65-bc59-18e8e4aab76a WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2f4f9489-36a4-466d-8147-fd501d8615c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class_bad [0.020317s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_devices [0.086134s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_port_creation [0.096775s] ... ok {1} ironic.tests.unit.db.test_api.MigrateToBuiltinInspectionTestCase.test_cannot_migrate [0.044712s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin [0.076190s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/5ace3220-b010-404b-9bdc-b8ea413d2ada WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2b6d0e22-8eda-436b-95ff-7f4558f83f8a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_api.MigrateToBuiltinInspectionTestCase.test_cannot_migrate_some [0.059715s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_1___legacy_bios_only_____bios___ [0.107624s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_validate [0.080698s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member [0.066387s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/15431fbb-6e56-4812-a1d6-b210e1e4a069 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0b509cf0-5cba-4e9d-a6fb-0602e3f99090 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_api.MigrateToBuiltinInspectionTestCase.test_migrate_all [0.053968s] ... ok {1} ironic.tests.unit.db.test_api.MigrateToBuiltinInspectionTestCase.test_migrate_with_limit [0.053032s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer [0.074225s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/0de2c7f0-27b3-4c81-b6b1-a8dacda642aa WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d91d5e02-3121-4bdd-a508-8f3e7979d790 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_2___uefi_only_____uefi___ [0.113620s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_done [0.125518s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin [0.059437s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/bb170da2-47ee-42de-b486-b04c9ac6dfab GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0a155022-267f-46f7-b6e6-02d262829675 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_3___legacy_bios_and_uefi_____uefi____bios___ [0.088464s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member [0.076926s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/3e09349a-e491-4f23-8b4b-4cf6b03c5083 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c24ac648-397d-42cc-91cb-56e85f4b01e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_fail [0.123270s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer [0.067819s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/c083aab5-7b72-4f8e-bff1-1fced75b5067 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2a383ba4-72ff-472a-b6e4-9799fc191ecf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi [0.116601s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_in_progress [0.084845s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_282_chassis_post_admin [0.062655s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e9d00ea8-8400-4e6f-ad38-28618cf89ccd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_failed [0.103750s] ... ok {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions [0.324834s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_283_chassis_post_member [0.065413s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b3bea1d0-b1e4-4401-b427-a61090a7f5e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_redfish_conn_error [0.111067s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_284_chassis_post_observer [0.064818s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e6c05cee-9402-4cf0-9a6c-84990056b71b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_not_supported [0.105125s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_still_waiting [0.098307s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_285_chassis_get_admin [0.074410s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-cae7bd0e-5f0e-4ab1-9672-6bf1daa4e9e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_bios_to_default [0.098775s] ... ok {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor [0.209972s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_task_monitor_not_found [0.090268s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_286_chassis_get_member [0.065966s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-a5c74105-f035-449e-8864-540223d5216e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor_old [0.043342s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_287_chassis_get_observer [0.067617s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e626cbcb-6866-4ef9-80bd-a18403669214 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo [0.112208s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_wait_elapsed [0.108144s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_288_chassis_detail_get_admin [0.073063s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-83473d39-7bf8-4db9-ba36-ba0574c120d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_289_chassis_detail_get_member [0.067347s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-cd0f1de6-d651-458a-823c-8122964339c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_no_password [0.117762s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_last_update [0.105663s] ... ok {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_emptyDB [0.194629s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_290_chassis_detail_get_observer [0.089788s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-34c31446-83c6-47aa-94e8-916abb86b47a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_handles_missing_table [0.085227s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_more_updates [0.111637s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_ok [0.179776s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_wait [0.072406s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_291_chassis_chassis_id_get_admin [0.103922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-358b4c8c-ba4f-4ad1-a51a-b8c351c62b12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_data_drive_simple_storage [0.081932s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_292_chassis_chassis_id_get_member [0.082583s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-91a44e48-2917-4880-aee9-171788a66aa9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_pass_as_arg_ok [0.132527s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_data_drive_storage [0.049669s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_fan [0.045812s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_power [0.032012s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_secure_boot_keys_to_default [0.099333s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_temperatures [0.045329s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_293_chassis_chassis_id_get_observer [0.208718s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-341de19b-7ba7-4f7f-844c-ab930295d012 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_ignore_node [0.389968s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed [0.046103s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_security_parameters_update [0.119443s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed_no_firmware_upd [0.054263s] ... ok {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_missing_version_columns [0.058928s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status [0.051378s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_294_chassis_chassis_id_patch_admin [0.120779s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-5f4524b4-8091-49b2-bf34-8488b5c9fc04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"(role:member and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status_no_firmware_upd [0.039580s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_error [0.068827s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_fail [0.174587s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_https [0.054264s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_swift [0.064112s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_invalid_device [0.193936s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_attach_virtual_media [0.111461s] ... ok {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_no_version [0.388966s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot [0.068279s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_295_chassis_chassis_id_patch_member [0.452021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-96b0440a-95fb-48e6-93ce-bb64d70b4afd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"(role:member and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_ok [0.158021s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot_not_implemented [0.081414s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detach_virtual_media [0.098681s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_296_chassis_chassis_id_patch_observer [0.134746s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-4c3a1a6f-90be-4baa-b361-769309c5d97b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"(role:member and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_fail [0.144009s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detach_virtual_media_all [0.092723s] ... ok {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_old [0.450583s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_297_chassis_chassis_id_delete_admin [0.194329s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-4f09b398-9b1f-4a51-b0a3-4905c94d90fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_true [0.177443s] ... ok {1} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_raises_missing_table [0.095676s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode [0.092117s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode_fail [0.057084s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_create_chassis_already_exists [0.071328s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_298_chassis_chassis_id_delete_member [0.194245s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-95da14a0-0b33-4395-adc7-5c6a0936bdc3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_failed [0.059278s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis [0.098606s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_in_bios [0.067161s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_missed_properties [0.068341s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_299_chassis_chassis_id_delete_observer [0.180109s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-1fcd858f-1b31-4d1d-a8c8-7e24ed779a48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_with_auth [0.085064s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_without_auth [0.074255s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detect_vendor [0.673118s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_300_node_history_get_admin [0.185173s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-622ecfff-f31d-490f-9cc4-959fbfcdb82d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_auth_failure_logging_threshold [0.118143s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_device [0.106158s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_301_node_history_get_member [0.149712s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0e45417d-e8bb-4d4b-a66b-f1fcb93949a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_that_does_not_exist [0.499946s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_mode [0.109044s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_clean [0.144554s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_with_nodes [0.073739s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_indicator_state [0.112490s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_id [0.056167s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_302_node_history_get_observer [0.159625s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-39eee75a-7852-460e-8c65-c66c8d677917 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_deploy [0.165583s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_uuid [0.059088s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_indicator_state_disk [0.096931s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_list [0.062406s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_missing_attr [0.092741s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_303_node_history_get_entry_admin [0.178896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/25935ff6-d182-448d-a786-f3d3e6a7316e WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-35cae18b-ef07-4f74-9e42-bd8d28d5ede1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_that_does_not_exist [0.133739s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_no_ports_found [0.099064s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_clean [0.299515s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis [0.132322s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_success [0.119662s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_that_does_not_exist [0.094564s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_properties [0.111930s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_304_node_history_get_entry_member [0.325387s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/47545441-e51d-469b-b5d1-f1eef32d6252 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-77531a18-6fd9-4745-91c8-d1e3b5753d15 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state [0.080978s] ... ok {1} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_uuid [0.107121s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_deploy [0.298468s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state_not_implemented [0.104471s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create [0.124548s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_sensors_data [0.075609s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_name [0.132541s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_305_node_history_get_entry_observer [0.345494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/bf5ca1be-dd5f-4a3d-a6ac-93c6aaea51b8 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0ae8d20b-cc56-4b75-8dce-6377de91f7d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_devices [0.102018s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_clean [0.276707s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_modes [0.090496s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_uuid [0.134830s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_indicators [0.115478s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_invalid_step_no_interface [0.112458s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_001_values ... SKIPPED: These are fake reference values for YAML templating {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_deploy [0.255495s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_virtual_media [0.111274s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_no_steps [0.127948s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi [0.096061s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_destroy [0.120604s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi_fail [0.134168s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_id [0.139730s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_clean [0.312448s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_002_nodes_post_admin [0.419851s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ca99e28e-2478-480d-a898-959af32775e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default [0.138372s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_name [0.142499s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_deploy [0.194552s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default_not_implemented [0.123853s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device [0.109945s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_uuid [0.189733s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_clean [0.215360s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_compat [0.140425s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_deploy [0.099002s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list [0.186961s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_failure [0.063575s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_noop [0.041521s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_clean [0.070958s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_003_nodes_post_member [0.557653s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b1ef334a-5f9a-4ed1-807d-565eedbacb85 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names [0.150133s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device [0.109236s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_deploy [0.086997s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_clean [0.098381s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail [0.115957s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names_no_match [0.137628s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail_no_change [0.093596s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_sorted [0.084935s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_004_nodes_post_observer [0.324292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-feb45fe5-a2fa-4fdd-b52e-da3d4169fec5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_duplicate_name [0.065261s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_http_boot [0.105648s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_extra [0.077794s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_name [0.097224s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_deploy [0.377102s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_005_nodes_get_node_admin [0.218829s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3f482cbd-41ed-4f14-bd8d-f9ebc4eaf81b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistence_fallback [0.188414s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_sum_mode_with_component [0.068129s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_not_found [0.079005s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency [0.098137s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_minimum_password_length [0.079080s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_add [0.123499s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_validate [0.079698s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_no_change [0.118519s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_006_nodes_get_node_member [0.231127s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d206e431-9c17-4fd8-9aae-a673cf37a1d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_remove_all [0.087764s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_clean [0.084692s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_vendor [0.090533s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace [0.069349s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_deploy [0.068451s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode [0.063098s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_clean [0.058275s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace_args [0.093201s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_007_nodes_get_node_observer [0.196988s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e2d7f792-274f-41f9-a98f-bee1485c3950 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_fail [0.074384s] ... ok {1} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_uuid_not_allowed [0.072748s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_deploy [0.083849s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_unsupported [0.099761s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_clean [0.059911s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_indicator_state [0.050332s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_008_nodes_get_node_other_admin [0.195538s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-65083636-8232-4cde-92f7-634026d48e10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_deploy [0.088557s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy [0.145633s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_indicator_state_disk [0.071781s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_cleaning [0.085093s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state [0.065367s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy_iwdi [0.136542s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_009_nodes_get_admin [0.164292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-71e3a49a-4d79-46bd-9e1f-3d37480cee9b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_fails [0.068914s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_deploying [0.074270s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_incorrect [0.064714s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_cleaning [0.080009s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_no_change [0.066798s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_clean_up [0.153940s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_unknown [0.067825s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_010_nodes_get_other_admin [0.200199s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3a7cbfb7-7a6d-4fd3-95f5-8e8573e57b70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"nodes": []} {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_deploying [0.131346s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_not_implemented [0.063199s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_deploy [0.141035s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_cleaning [0.106657s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware [0.064584s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_011_nodes_detail_get_admin [0.170639s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-efd79df0-68db-4a0b-bf56-df67b5549788 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_invalid_args [0.055810s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step [0.123225s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_deploying [0.129519s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step_no_success_log [0.078812s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage [0.159377s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_012_nodes_detail_get_member [0.171603s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-306a3625-1b5a-4096-b37b-a6b4dd6fbe5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps [0.100589s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_cleaning [0.127704s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps_priority [0.128908s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage_both [0.186929s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_013_nodes_detail_get_observer [0.190629s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4f5dd2d6-caa7-4932-9a17-a73c3a0a5696 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:node:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_properties [0.055962s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_deploying [0.190722s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_validate [0.099751s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare [0.118395s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_boot_mode [0.093726s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning [0.234297s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_014_nodes_node_ident_get_admin [0.277661s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4ab00d0a-a09e-42f2-b634-fa92857e1558 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_boot_mode_immediate [0.107240s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning [0.186508s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning_deploying [0.170551s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_015_nodes_node_ident_get_member [0.177936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9bb4379d-fe7d-4457-a36a-00183573183f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_cleaning [0.122404s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_016_nodes_node_ident_get_observer [0.149426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-39fde62a-a297-4076-a1ac-bc1a851f550b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_secure_boot [0.337426s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_callback_no_steps [0.335951s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_secure_boot_immediate [0.046660s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_deploying [0.141832s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_secure_boot_no_wait [0.069424s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_017_nodes_node_ident_patch_admin [0.198721s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-48c8047f-ce98-4972-8deb-b1fd00680ed8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_cleaning [0.149567s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_with_smartnic_port [0.199485s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_018_nodes_node_ident_patch_member [0.133239s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d5985250-21f0-4280-9c07-a71b14283a3c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_with_smartnic_port [0.113597s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_deploying [0.137269s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down [0.057372s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_force_reboot [0.056068s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_019_nodes_node_ident_patch_observer [0.182997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1d844510-f449-404b-b0e5-0f9759b8956a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_cleaning [0.153727s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_soft_poweroff_retry [0.059660s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning [0.065844s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_deploying [0.136788s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning_with_smartnic_port [0.074272s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_020_nodes_node_ident_delete_admin [0.188183s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-74665965-1ac7-42a6-a806-55ab458bb2e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_validate [0.057755s] ... ok {1} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_write_image [0.047894s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_cleaning [0.153453s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed [0.062942s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_021_nodes_node_ident_delete_member [0.183421s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-56972e8e-5cff-4d23-b70f-b83b64a02ee8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed_on_rebuild [0.044013s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state [0.039857s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state_fail [0.028517s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_022_nodes_node_ident_delete_observer [0.088353s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6f7b0b11-8dad-4f0e-82fd-93d93307e7b9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state_ilo6_redirect [0.029375s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_deploying [0.177631s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_023_nodes_validate_get_admin [0.064327s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-32a7e674-dc77-441c-90da-ba38a84ce4af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_invalid_state [0.061351s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_cleaning [0.126043s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_024_nodes_validate_get_member [0.116597s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a68f6357-ebf6-41a9-812c-66ae1a99bb80 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_secure_boot_timeout [1.068430s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_deploying [0.152436s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_025_nodes_validate_get_observer [0.161455s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/validate WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b11d95bd-ea50-4452-8ed2-a862bff680be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_clean [0.153869s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_cleaning [0.083569s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_deploying [0.084963s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_deploy [0.108335s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_cleaning [0.056923s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_create [0.095931s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_deploying [0.083015s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_delete [0.134669s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_cleaning [0.111033s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_controller [0.057534s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_deploying [0.084089s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_controller_no_controllers [0.052395s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_first_controller_controllers [0.039408s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_cleaning [0.074435s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_026_nodes_maintenance_put_admin [0.550757s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-760375d0-4c1b-4a92-b46b-9be4d10bff38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_first_controller_empty [0.108402s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_deploying [0.164843s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_027_nodes_maintenance_put_member [0.163561s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-33071cd1-1765-49ba-a00c-85e80c36ca16 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_first_controller_storage_controllers [0.136081s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_cleaning [0.123219s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_028_nodes_maintenance_put_observer [0.144763s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5d7d6d78-2d35-4b7e-80cc-f295856efaaf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_storage_controller [0.105999s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid0 [0.041376s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid1 [0.065354s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_029_nodes_maintenance_delete_admin [0.165178s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3d4e1029-5940-4fc5-bd79-8257d40baeb8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_deploying [0.196165s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid5 [0.072497s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_030_nodes_maintenance_delete_member [0.111621s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9f3f458b-54fc-4561-bfe6-0bfe148d388b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_boot_mode.BootModeTestCase.test_boot_mode [0.103832s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid6 [0.099656s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_extra_hardware_with_errors [0.045916s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_invalid_data_strict_mode_off [0.054331s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_031_nodes_maintenance_delete_observer [0.122287s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-63afe6a3-21f8-4fc9-a1f9-dd386e2d2f1f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_invalid_data_strict_mode_on [0.080667s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_032_nodes_management_boot_device_put_admin [0.094884s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c0fa1fb3-b12c-474b-9b90-f95e0f68ae52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_no_data_received [0.053426s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_033_nodes_management_boot_device_put_member [0.099356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2cb80ffa-8d85-4f93-a52c-51dc9fb3fb15 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_valid_extra_hardware [0.098754s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_active_interfaces [0.032161s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_all_interfaces [0.035370s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_034_nodes_management_boot_device_put_observer [0.091238s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-16dfdbf1-de1f-4201-be2d-dc707acc1481 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_no_pxe_fallback_to_all [0.046092s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_nothing_to_add [0.039999s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_failed [0.493384s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_still_processing [0.060980s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_035_nodes_management_boot_device_get_admin [0.160507s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2bd3071d-e6dd-4212-9d03-32713d1cb71d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_off_fail [2.043161s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_036_nodes_management_boot_device_get_member [0.107790s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d56c6f1e-01b2-43e0-b925-26d837442eee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_success [0.127780s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_037_nodes_management_boot_device_get_observer [0.076541s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fbc34cd5-c9f8-4fdd-9dab-1f61dab49fd8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_task_mon_error [0.074176s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_038_nodes_management_boot_device_supported_get_admin [0.076099s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-82f43bd2-5b30-4b05-9d18-925638beebec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid10 [0.066625s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_pxe_only [0.369844s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid5 [0.037635s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_039_nodes_management_boot_device_supported_get_member [0.087706s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5438d02a-dfd3-4aa0-be8a-6caff64a2a93 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1a [0.048459s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.AbortInspectionTestCase.test_cleanup_failed [0.063256s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b [0.067363s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.AbortInspectionTestCase.test_success [0.065701s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_040_nodes_management_boot_device_supported_get_observer [0.094531s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/boot_device/supported WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c4aaa42f-5ff5-4e60-8f0c-69a623ac4ba6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_immediate [0.068463s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.ContinueInspectionTestCase.test [0.081020s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_041_nodes_management_inject_nmi_put_admin [0.068078s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-482cf4f2-7466-41d5-b805-0c18c1352534 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_on_reset [0.078058s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.InspectHardwareTestCase.test_managed_ok [0.078283s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_042_nodes_management_inject_nmi_put_member [0.077824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d2a27bdd-5062-40de-b460-51d4d0fa4100 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2 [0.065184s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_043_nodes_management_inject_nmi_put_observer [0.084018s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7aead562-fc95-444b-ba1b-5bd8e67507b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2_on_reset [0.062166s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.InspectHardwareTestCase.test_managed_unversion_url [0.129868s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_044_nodes_states_get_admin [0.071567s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3e5f1aed-9a9b-4c78-9f9a-0b025956b916 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_3 [0.063945s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.InspectHardwareTestCase.test_unmanaged_disallowed [0.055016s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_045_nodes_states_get_member [0.089209s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-02dba329-bb79-4fe1-a450-134730dc1183 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.inspector.test_agent.InspectHardwareTestCase.test_unmanaged_ok [0.074583s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_4 [0.090531s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.RunInspectionHooksTestCase.test [0.040412s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.RunInspectionHooksTestCase.test_always_collect_logs [0.030388s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_046_nodes_states_get_observer [0.107392s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bc39f2eb-ee2b-413d-9f16-e2c3f5a042c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration [0.065050s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration_failed [0.104611s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_047_nodes_states_power_put_admin [0.202417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-27c39150-6d2b-4eef-afc0-4af9728bd9c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings [0.072915s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5a [0.339742s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_on_ok [1.142682s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings_failed [0.072208s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_048_nodes_states_power_put_member [0.127933s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3340509c-b642-4cf3-aed0-bf141b16bf80 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5b [0.112556s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_factory_reset [0.076654s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_6 [0.046744s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_049_nodes_states_power_put_observer [0.089737s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6f26e69e-8233-4b2a-a5d8-f8a62986b7d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_validate [0.100955s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_050_nodes_states_boot_mode_put_admin [0.078168s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2d08779e-4e56-4964-89ba-f1cb50ba9e25 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_051_nodes_states_boot_mode_put_member [0.091811s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-29d6b711-bae8-46ac-bed4-6391d3af3f4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_interface_type [0.198386s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__cleanup_boot_from_volume [0.145730s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_immediate [0.138098s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_052_nodes_states_boot_mode_put_observer [0.149568s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-58ca4a56-d952-48b0-8c48-60ab3a1f9262 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_fail [0.494034s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_apply_error [0.156544s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_on_reset [0.071393s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_053_nodes_states_secure_boot_put_admin [0.114570s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e9717443-728d-41db-a2d4-b1b6fb62f372 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_get_physical_disks [0.070745s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_fc [0.120206s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_update_raid_config_missing_raid_type [0.051064s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config [0.048125s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_054_nodes_states_secure_boot_put_member [0.151756s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a546a4da-9b4e-4003-900f-5891ba67c8f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config_scsi [0.050660s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi [0.155056s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_volume_create_error_handler [0.048540s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_055_nodes_states_secure_boot_put_observer [0.099171s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f56b66ef-5a0a-40ba-ad12-69a0116eccb5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_chap [0.127202s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final [0.097841s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_056_nodes_states_provision_put_admin [0.124355s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f01d3942-a4c3-404b-87b9-7416cc07a0c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_no_portal_port [0.103721s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result [0.132554s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_057_nodes_states_provision_put_member [0.127294s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ceee31ae-d9cd-4d5e-970f-eb07dffd7b58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result2 [0.050864s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_multi_lan_ports [0.111735s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_clean [0.051116s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance [0.056428s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_deploy [0.080385s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance_error [0.057433s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_058_nodes_states_provision_put_observer [0.144821s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/provision WITH {'target': 'deploy'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-64164ea5-1543-4a4d-9a32-1f80b1d28cbf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final [0.054680s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final_registered [0.051554s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_instance [0.145778s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_apply_configuration [0.059033s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_ramdisk_skip [0.067956s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration [0.067596s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_059_nodes_states_raid_put_admin [0.269729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d92578f6-8ce7-41b9-8fba-63b520a7a3a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_empty_target_raid_config [0.074942s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_invalid_physical_id_in_lan_port [0.091587s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_ok [1.066260s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_no_target_raid_config_after_skipping [0.062140s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi [0.110110s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_nonroot [0.080533s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_fail [0.124044s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_060_nodes_states_raid_put_member [0.185957s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4992b7e3-14df-429b-9909-c266fc01228a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_invalid_netmask [0.089486s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_root [0.112441s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_ip [0.075260s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_delete_configuration [0.044304s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps [0.067612s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_iqn [0.104082s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps_config_priority [0.055685s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_netmask [0.079458s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_physical_id [0.079715s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_061_nodes_states_raid_put_observer [0.389499s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/raid WITH {'target_raid_config': {'logical_disks': [{'size_gb': 500, 'is_root_volume': True, 'raid_level': 1}]}} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9b8a9a2f-84a6-4caa-a2dc-2fcf8cdd4f57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_large_netmask [0.100075s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_062_nodes_states_console_get_admin [0.184964s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3655ce03-8336-4ad6-9d73-17c5d41fdcd3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_small_netmask [0.108932s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_deploy_steps [0.377039s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_no_physical_id_in_lan_port [0.093481s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_063_nodes_states_console_get_member [0.122730s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-70080405-0640-4e6e-bffe-7ae36d1dff82 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_clean_up [0.093262s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__get_mac_addresses [0.058388s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_exception [0.052262s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy [0.068624s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_064_nodes_states_console_put_admin [0.166967s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6da08535-7fe4-4e1b-91bc-15d406602fe5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_fast_track [0.077265s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_ipmi [0.146974s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_065_nodes_states_console_put_member [0.076692s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2c30bd36-a1fe-40b4-9f11-a6d8df4acc35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_storage_should_write_image_false [0.080199s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_with_deployment_reboot [0.077000s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_redfish [0.114198s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test__init_fail_invalid_fpga_ids_input [0.039349s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps [0.092964s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test__init_fail_invalid_gpu_ids_input [0.039046s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_066_nodes_states_console_put_observer [0.196392s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/states/console WITH {'enabled': True} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-276078d1-4d78-406b-8498-d976cf64f0bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps_config_priority [0.071830s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_properties [0.033882s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_067_nodes_vendor_passthru_methods_get_admin [0.106607s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0541c7bd-169c-4913-bd94-30c20c1725a1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_get_properties [0.107238s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_service_steps [0.055498s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare [0.106686s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_068_nodes_vendor_passthru_methods_get_member [0.222616s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-07ddd7a7-128a-4fd2-a0c1-0c5723596bc1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_active_and_unrescue_states [0.135380s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_adopting [0.062766s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_069_nodes_vendor_passthru_methods_get_observer [0.156750s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/methods WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-500ea8c2-d8a2-44f8-ab76-33d8e5135bee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_boot_from_volume [0.120400s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_070_nodes_vendor_passthru_get_admin [0.127322s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-74eaba23-0d9a-401b-851a-e9c4841c5124 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning [0.077541s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_fast_track [0.052555s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware [0.609196s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_071_nodes_vendor_passthru_get_member [0.158428s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7f4eccef-1571-44bf-9518-c38b4e235e8d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_existing_cap_in_props [0.051209s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_manage_agent_boot_false [0.096538s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_inspect_exception [0.112169s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_fast_track [0.085061s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok [2.102008s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_mac_already_exist [0.135578s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_empty_gpu_ids_fpga_id_sand_existing_cap [0.064861s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot [0.219079s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_072_nodes_vendor_passthru_get_observer [0.347265s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dbb96dc9-68a6-4a07-914a-5132ae7ec34c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_empty_gpu_ids_fpga_ids [0.065619s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_gpu_and_cpu_fpgas_results_are_different [0.081299s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_localboot [0.151484s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_gpu_cpu_fpgas_zero_and_existing_cap [0.065090s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_no_manage_agent_boot [0.070082s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_pci_gpu_devices_return_zero [0.044526s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_trusted_boot_removed [0.060998s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_073_nodes_vendor_passthru_post_admin [0.292264s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7c02d642-8443-4faf-9b06-41ee01db770e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_image [0.093478s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_074_nodes_vendor_passthru_post_member [0.129286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-effe080e-6f2d-4711-9346-0574dc1bed27 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_with_power_off [0.164282s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_validate [0.064933s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_075_nodes_vendor_passthru_post_observer [0.104077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ff81d651-dd0f-4037-996d-ff4c5d49a413 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_localboot_ppc64 [0.253541s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_validate_fail [0.111367s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_get_properties [0.035227s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_storage_should_write_image_with_smartnic [0.114447s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_076_nodes_vendor_passthru_put_admin [0.156892s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-81087e6c-7b8c-44db-8a34-3cf4bd9ebde5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_detect_vendor_ipmi [0.061773s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_manage_agent_boot_false [0.121455s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_detect_vendor_redfish [0.086443s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_077_nodes_vendor_passthru_put_member [0.169277s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8185cf0c-6e9f-4a8c-97e2-ef2f4611fb00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_exception [0.064047s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_rescue_states [0.119195s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_ipmitool_ng_redfish [0.047883s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_078_nodes_vendor_passthru_put_observer [0.114834s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3e2ac923-b252-4c72-81dc-411a2b9d44c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_service [0.060903s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_ipmitool_ok_ipmi [0.075522s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ng_ipmi [0.056146s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_storage_write_false [0.086885s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_079_nodes_vendor_passthru_delete_admin [0.090394s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2b10727f-b15f-4f92-bea4-48a3c2bcf473 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ng_redfish [0.061553s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_neutron_net [0.095531s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_080_nodes_vendor_passthru_delete_member [0.111985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-35c716a5-6bf3-42d5-b12a-da1a206b7da5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ok_ipmi [0.089308s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ok_redfish [0.063128s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_081_nodes_vendor_passthru_delete_observer [0.102598s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru?method=test GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-881f6161-0cda-4284-828f-dcbb4cda79ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_smartnic_port [0.156938s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_supported_boot_devices_ipmi [0.065439s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_082_nodes_traits_get_admin [0.077713s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-94e012e5-64ab-47df-b9f4-21958c8dfdbd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_supported_boot_devices_redfish [0.080985s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_083_nodes_traits_get_member [0.106351s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-226e1c34-014d-4cca-a965-932eb5b84862 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_fail [0.057800s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down [0.166414s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_ok [0.061494s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning [0.091416s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_084_nodes_traits_get_observer [0.138947s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5a65a932-0b15-475a-9bb0-546aa7535ffc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_restore_irmc_bios_config [0.075298s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning_manage_agent_boot_false [0.063463s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ng_ipmi [0.109088s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_service [0.077582s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_085_nodes_traits_put_admin [0.127466s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-68b5c7c6-f1d7-4ee8-bc21-3bb8de68c12c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_with_smartnic_port [0.076734s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_086_nodes_traits_put_member [0.081650s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-547e0f11-24f3-4162-a1b3-8c9dec21cb5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate [0.081877s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_087_nodes_traits_put_observer [0.109191s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits WITH {'traits': ['CUSTOM_TRAIT1', 'HW_CPU_X86_VMX']} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-df5dbd42-0c34-488f-988a-7d9b347f9a2b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_driver_info_manage_agent_boot_false [0.061974s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_bios_ipmi [0.256942s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_088_nodes_traits_delete_admin [0.105981s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9838b3c9-33e2-4572-93cf-aa6c97aa3c9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_file_image_no_checksum [0.118761s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_089_nodes_traits_delete_member [0.139664s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f2ac0b46-36fe-4ea5-821e-1fa0ec7cd210 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_instance_info_missing_params [0.104140s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_cdrom_ipmi [0.219747s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_090_nodes_traits_delete_observer [0.076664s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-af0377ed-1933-46bf-8170-ae71b0f8e57d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_image_type [0.061725s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_091_nodes_traits_trait_put_admin [0.070727s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e38f0a8f-d137-4802-80a7-cbf9ff072488 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_disk_ipmi [0.207810s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_092_nodes_traits_trait_put_member [0.122287s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1fea8789-a731-4cfe-9542-cc8e9ee79f4d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_proxies [0.275594s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_093_nodes_traits_trait_put_observer [0.129963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/CUSTOM_TRAIT2 WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c431da31-0391-4a93-a7f1-f0fa7e93c384 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints [0.051611s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints_iinfo [0.046447s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_094_nodes_traits_trait_delete_admin [0.091849s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c823e96b-0c89-4f31-a915-7b92df0231a4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum [0.062153s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum_os_algo [0.052959s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_095_nodes_traits_trait_delete_member [0.082489s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f1c3cc38-7084-44c3-9844-d65401e5efe2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_pxe_ipmi [0.366216s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_algo [0.061820s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_checksum [0.052735s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_image_hash [0.067332s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout [3.164824s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_storage_should_write_image_false [0.066787s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_096_nodes_traits_trait_delete_observer [0.289990s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/traits/trait GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-59f10c2a-9915-4275-b68d-38f3976af95c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_off [0.100097s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_safe_ipmi [0.330989s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_097_nodes_vifs_get_admin [0.076065s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-53937680-be7b-41d0-8191-0917a4e4f3ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interfase_set_boot_device_fail_redfish [0.057383s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image [0.165723s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interfase_set_boot_device_success_redfish [0.056182s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_098_nodes_vifs_get_member [0.103745s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ce0ad55a-9d07-4adc-b8e8-a61b8d1c668f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_basic_auth_success [0.073204s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_ipmi_fail [0.043541s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_ipmi_success [0.041549s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_basic_auth_success_blocked [0.062233s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_redfish_fail [0.046638s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_099_nodes_vifs_get_observer [0.125623s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9e453392-9c5f-41c5-bca0-fe4c83bf472c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_image_source_is_url [0.061252s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_redfish_success [0.059161s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_partition_image [0.070385s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_100_nodes_vifs_post_admin [0.088917s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e297aa5c-6215-4a90-87c1-6de8511d94c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_render_configdrive [0.069252s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_101_nodes_vifs_post_member [0.076444s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f185d060-6073-4731-9fd9-c5584f1482b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_no_proxy_without_proxies [0.072785s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_102_nodes_vifs_post_observer [0.085496s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ee21d58f-5de2-4956-85ff-33935ea1ca00'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-786f3463-6642-4cc5-908c-088cc0681f0b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_proxies [0.058288s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_empty_result [0.032382s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_103_nodes_vifs_node_vif_ident_delete_admin [0.082889s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4dac21ec-a38e-4d00-8277-e46746c1a0e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_has_retries [0.022911s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_fail_invalid [0.311069s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_multi_command [0.023310s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_single_command [0.032226s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_104_nodes_vifs_node_vif_ident_delete_member [0.072128s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-658945d2-cd02-4d73-bf2e-6dcb36cdac2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_fail_missing [0.045252s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_single_command_mismatch [0.047428s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_raise_http_success [0.067550s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_105_nodes_vifs_node_vif_ident_delete_observer [0.068229s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/ee21d58f-5de2-4956-85ff-33935ea1ca00 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-105994a2-30d6-4b94-8151-8dadb138dee8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios [0.035789s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_raise_https_success [0.053077s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_106_nodes_management_indicators_get_admin [0.067021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9d3e3c8e-093c-459d-bd9f-b5b4c60c0a3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios_default [0.060109s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default [0.046846s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_success [0.082352s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_107_nodes_management_indicators_get_member [0.071685s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-364d2c73-c737-41a7-a573-f47bc007fb0f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default_set [0.025771s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__is_expected_power_state [0.023290s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_capabilities [0.019346s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info [0.026803s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_invalid_target_state [0.054118s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_108_nodes_management_indicators_get_observer [0.079662s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/indicators WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0c58ee0d-be81-48b9-bce0-831ba1ddc4e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_cap [0.026157s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_secure_boot [0.027252s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_uefi [0.021373s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_off_ok [0.077041s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_109_nodes_management_indicators_component_get_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists [0.035766s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_on_ok [0.068097s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_110_nodes_management_indicators_component_ind_ident_get_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists_fail [0.084138s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_reboot_ok [0.064208s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid [0.029332s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_111_nodes_management_indicators_component_ind_ident_put_allow ... SKIPPED: API appears to be broken and should be patched outside of this work. {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir [0.025856s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_scci_exception [0.051366s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir_tempdir [0.025432s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_snmp_exception [0.038868s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file [0.025021s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_112_portgroups_get_admin [0.073884s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-50f43d6d-b1c2-41be-87ee-4526df22ea2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file_not_found [0.026746s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok [0.041270s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_not_a_num [0.028641s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok [0.046078s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console [0.032092s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_113_portgroups_get_member [0.077729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-85685adc-d9e5-4633-8f3e-581050300055 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_exception [0.025909s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_power_off [0.056456s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_114_portgroups_get_observer [0.071176s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-423a02da-b449-4901-b837-eeaa97a7dd19 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_reboot [0.093030s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_115_portgroups_post_admin [0.099262s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cf6e9a46-b8e2-4f5f-94f1-49979ade2306 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_timeout [0.059685s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_1_and_0 [0.046914s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_116_portgroups_post_member [0.079352s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-44f40709-bfee-4036-b6cd-59d43cbd9c99 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_5_and_0 [0.039211s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_117_portgroups_post_observer [0.069370s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/portgroups WITH {'node_uuid': '18a552fb-dcd2-43bf-9302-e4c93287be11'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9237381e-f7d8-4076-aeaf-40ffa82c9e5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration [0.051223s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration_return_cleared_raid_config [0.044064s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_fail_create_raid_without_target_raid_config [0.035232s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_118_portgroups_detail_get_admin [0.096729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f4a2e419-7984-4c5f-9471-2cb082f1b0db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_119_portgroups_detail_get_member [0.084489s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7bba54f8-7407-4e67-b1d7-38135970d5ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_all_physnets [0.129603s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_120_portgroups_detail_get_observer [0.063096s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-df7b630b-0b95-4e5d-87ac-3f25f25663bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:portgroup:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_flat [0.066161s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_121_portgroups_portgroup_ident_get_admin [0.083970s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a3d60551-a461-4b1c-af07-64c4b0e0777c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_122_portgroups_portgroup_ident_get_member [0.074738s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5ebb18e0-b7c8-4208-97c6-3769ffc6c201 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron [0.125767s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_123_portgroups_portgroup_ident_get_observer [0.067922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2321ce84-1408-4985-883b-be8648d47d45 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron_missed [0.097268s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_forced_kill [0.828788s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_124_portgroups_portgroup_ident_patch_admin [0.075371s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a4f6321d-0fe1-4aea-9f61-c1ae05a89ad1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_nopid [0.047782s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_125_portgroups_portgroup_ident_patch_member [0.075043s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d0e35972-2b64-4951-b972-702f865f482a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_shellinabox_not_running [0.074770s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_126_portgroups_portgroup_ident_patch_observer [0.076439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-40a1f481-8d80-480a-bf7e-27b9a1068399 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_default [0.122298s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_127_portgroups_portgroup_ident_delete_admin [0.103085s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3f046779-a840-4bc8-a76b-70a4b2b68c1a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_physnet [0.336016s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_128_portgroups_portgroup_ident_delete_member [0.069046s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2f6e055f-ae75-49dc-a89c-655414f5cdc9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_hostname [0.110976s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv4 [0.075691s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_129_portgroups_portgroup_ident_delete_observer [0.116556s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-45774bd2-fcb4-4aac-9b29-39d7836e76ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_uuid [0.205647s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_130_nodes_portgroups_get_admin [0.082656s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-25f918e8-e2f0-4cd0-be45-c0a35bbb510d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv6 [0.129138s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_131_nodes_portgroups_get_member [0.076009s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e457fefb-8c28-47c1-bfc8-b3a12db56555 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_no_free_ports [0.073967s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_range_retry [0.055921s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_success [0.038924s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_https_url [0.033368s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_url [0.060365s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_physnets [0.334053s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp [0.048548s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp6 [0.036166s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp_with_address_conf [0.035534s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_invalid_console_port_range [0.030676s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_port_physnets [0.152786s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file [0.025688s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file_fail [0.024951s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console [0.051804s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail [0.043049s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_132_nodes_portgroups_get_observer [0.511841s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-87f0b7a5-a3a2-4105-91b1-398b0b8b6db6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet1 [0.140055s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_no_pid [0.052571s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_133_nodes_portgroups_detail_get_admin [0.123037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-06f132b8-d6bc-46a4-9e12-c6571edcfd2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_134_nodes_portgroups_detail_get_member [0.095281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d412c323-2dba-4fa8-a629-7eedfa0db8d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet2 [0.225549s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_135_nodes_portgroups_detail_get_observer [0.158104s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/portgroups/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dd940b49-6890-4c24-a94b-5cdc0811bcff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet3 [0.167902s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_nopiddir [0.436219s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_136_ports_get_admin [0.147377s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d245f55f-ca59-43e6-986e-23bc4f2d5c64 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_port_uuid [0.157491s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_nopid [0.119936s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_137_ports_get_member [0.086628s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a2550d21-fc84-4beb-8de9-bf007d7168a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_138_ports_get_observer [0.069425s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0918a9af-44db-494d-aa6b-fa9ecd3cf4ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid [0.152650s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on [4.127921s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_timeout [0.158769s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console [0.058751s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_139_ports_post_admin [0.144492s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1509f5c3-1d31-4ac8-ae08-28aa40595e47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_default_ipv4 [0.033454s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_ipv4 [0.053314s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_default_timeout [0.059430s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout [0.035181s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_140_ports_post_member [0.228419s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-08453438-7d63-4aa7-9607-2223e8edd172 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout_disabled [0.109148s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail [0.066952s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid_attached_vifs [0.464363s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_141_ports_post_observer [0.183022s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'node_uuid': '68a552fb-dcd2-43bf-9302-e4c93287be16', 'address': '00:01:02:03:04:05'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4a73961b-e89e-4a65-bb0a-4616d02ff604 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail_nopiddir [0.086132s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_empty_portgroup [0.097095s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_nopid [0.095534s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_standalone_portgroup [0.128378s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console [0.055538s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console_fail_nopid [0.028736s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console [0.046441s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_no_matching_physnets [0.102518s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console_fail_nopid [0.030164s] ... ok {2} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_valid_console_port_range [0.022919s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test__check_disk_layout_unchanged [0.035068s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_142_ports_detail_get_admin [0.336972s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-02d785fb-a0af-40f2-8580-aed3bade501c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_nothing_free [0.087039s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test__check_disk_layout_unchanged_fails [0.040146s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_configdrive [0.035102s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_good [0.036675s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_ephemeral_disk [0.032944s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_first [0.123258s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_143_ports_detail_get_member [0.185399s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-28483c62-9888-4901-9176-1fa69615917c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_ephemeral_gb [0.060888s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_physnet_match_first [0.073075s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_preserve_ephemeral [0.064267s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports [0.084710s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_144_ports_detail_get_observer [0.115814s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ca7c6f41-422d-4568-9617-dbfce836201f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:port:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_root_gb [0.049490s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_missing_instance_source [0.050503s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first [0.076245s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_missing_root_gb [0.033576s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_non_image_deploy [0.034978s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_145_ports_port_id_get_admin [0.128433s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c1e1f530-aa6f-4e6a-a9bf-0db8900b7593 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image [0.053020s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first2 [0.137506s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image_anaconda [0.045151s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_146_ports_port_id_get_member [0.095405s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-aa37f73e-ee3d-4a0f-b781-fe5efa66af2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image_no_kernel [0.079329s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_unicode_swap_mb [0.038699s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_147_ports_port_id_get_observer [0.125760s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c764906f-14d9-40f6-9a1f-0c1c3d4efdb6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_ephemeral_gb [0.037123s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_ephemeral_missing_format [0.038500s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_148_ports_port_id_patch_admin [0.123783s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5344a5bd-8fdd-4a2e-a64f-bdc34a3903ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_preserve_ephemeral_false [0.070091s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_preserve_ephemeral_true [0.037591s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_pxe_enabled_first [0.341897s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_whole_disk_image [0.024510s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_whole_disk_image_missing_root [0.037962s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_149_ports_port_id_patch_member [0.119269s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b62f81a2-6336-4361-9dcd-f1c134e87a68 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_check_interface_capability [0.034125s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_port [0.105019s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume [0.058353s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_portgroup [0.104708s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume_none [0.089319s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_150_ports_port_id_patch_observer [0.175618s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-64a63fe1-d174-4cc6-b349-f41f55cd2206 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_client [0.074113s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot [0.075785s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_exception [0.048208s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_client [0.120784s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false [0.102299s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok [2.176186s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_tenant_vif [0.091025s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_151_ports_port_id_delete_admin [0.280909s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e8979b57-cdb0-499a-bac8-1801dce4883f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false_fc_target [0.147928s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_smartnic_port [0.154491s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_error [0.129954s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_bios_registry_save [0.088705s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_152_ports_port_id_delete_member [0.233600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2a342ab9-82d6-4b4a-a613-1732ad5ff962 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_empty_bios_registry [0.072579s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_fc [0.172569s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_153_ports_port_id_delete_observer [0.145119s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3188f785-6ae3-42d2-9b09-ce80d85a33f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Port 1be26c0b-03f2-4d2e-ae87-c02d7f33c781 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_154_nodes_ports_get_admin [0.086225s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2cadb7fb-2769-44e8-8bff-1cf78fa16e8c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_exception_bios_registry [0.222248s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_iscsi [0.157423s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_155_nodes_ports_get_member [0.160091s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ee910354-0217-4954-bc93-86278b2c3896 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_no_bios_registry [0.162281s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device [0.044864s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device_inserted [0.031741s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_tear_down_storage_configuration [0.264964s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_already_inserted [0.070650s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew [0.058508s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_156_nodes_ports_get_observer [0.250958s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-23c1a7fd-73bd-4c83-a34b-3425733fac9f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_both_master_and_dest_out_of_date [0.131143s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew_dvd [0.091311s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate [0.069683s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew_dvd_retry [0.062069s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate_no_force_raw [0.044727s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok_initial_power_off [1.099263s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_157_nodes_ports_detail_get_admin [0.187774s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dacdb8c1-8c54-4b68-acee-f9782bd56406 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_bad_device [0.058976s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_out_of_date [0.086565s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_empty_media_type [0.057921s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_hardlink_fails_fallback_to_copy [0.071340s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_while_ejecting [0.061642s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_master_out_of_date [0.039039s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_158_nodes_ports_detail_get_member [0.173636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-42a2f714-0f89-4ca7-a27f-660f1e96295c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir [0.050119s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_compatible_with_idrac [0.096506s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir_memory_low [0.035696s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_incompatible_with_idrac [0.052335s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid [0.030382s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid_no_force_raw [0.024483s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_cdrom_and_floppy [0.058422s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_only_cdrom [0.043796s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_ramdisk [0.055141s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_ramdisk [0.052917s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_159_nodes_ports_detail_get_observer [0.340266s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-95a5c8d7-6eeb-435a-bf12-e4a06a550d1d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_everything [0.058411s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_not_inserted [0.063161s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_dest [0.334987s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_specific [0.063233s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_master [0.042888s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_160_portgroups_ports_get_admin [0.169511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9c51182f-f95e-4332-8a40-137925aa2339 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_out_of_date [0.039760s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_up_to_date [0.025964s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_unknown [0.076427s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img [0.026040s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img_not_cached [0.027993s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_same_time [0.022334s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_up_to_date [0.025596s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_master [0.021401s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_updated_at [0.028022s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_out_of_date [0.024708s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_161_portgroups_ports_get_member [0.235175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7911e737-5cdb-47be-9643-78a08d1cdbdb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_image_utils.Ilo5ImageHandlerTestCase.test_ilo5_kernel_param_config [0.041918s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_utils.IloImageHandlerTestCase.test_ilo_kernel_param_config [0.052340s] ... ok {2} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupCacheTestCase.test_clear [0.030185s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_with_dvd_cisco_ucs [0.337951s] ... ok {2} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupCacheTestCase.test_new_value [0.040020s] ... ok {2} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupCacheTestCase.test_replace_with_empty [0.050907s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_162_portgroups_ports_get_observer [0.203167s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2353782f-3681-454b-9e14-adeb2684bc58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info [0.070772s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info_exc [0.049813s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_arch_deploy [0.057839s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_deploy [0.168344s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_arch_rescue [0.095687s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_163_portgroups_ports_detail_get_admin [0.227400s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dc29061b-822c-4f67-b0e9-e05b4e38507d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_hierarchy_deploy [0.080454s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_end [0.133705s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_hierarchy_missing_param_deploy [0.081461s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_error [0.079821s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_hierarchy_missing_param_rescue [0.039375s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_164_portgroups_ports_detail_get_member [0.213836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ca3b4e57-ad6b-4a5b-819a-3d0de11f7f40 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_hierarchy_rescue [0.049269s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_start [0.122483s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_deploy [0.041345s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_exc [0.035224s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_deploy [0.085300s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_165_portgroups_ports_detail_get_observer [0.197307s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/detail WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8915e48b-5152-4426-9e4e-cce49de3fc18 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Portgroup 6eb02b44-18a3-4659-8c0b-8d2802581ae4 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare [0.171266s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_deploy_by_arch [0.066760s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_rescue [0.059621s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_166_volume_get_admin [0.117981s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a1186b8a-b5bd-417b-9777-2955ffb12c84 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_active [0.145458s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_rescue_by_arch [0.084989s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_cleaning [0.080915s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso [0.085060s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso_deprecated [0.069441s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_167_volume_get_member [0.230981s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4a2bdeaa-7fdb-4f32-9b41-93f367a0baf3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_deploy [0.049893s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_deploy_by_arch [0.048475s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_rescue [0.073565s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_rescue_by_arch [0.071204s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_reboot_to_instance [0.414029s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_ramdisk [0.100292s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable [0.090678s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_instance [0.116129s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable_deprecated [0.046229s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_168_volume_get_observer [0.476243s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0a4b84b8-881b-4c26-9100-d39d7727ad4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk [0.097942s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_rescue [0.068505s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk_rescue [0.089802s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_boot_option [0.096519s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_169_volume_connectors_get_admin [0.139665s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-aea57e62-a215-48a4-bbc4-5b4b1ef01ee7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_get_properties [0.059481s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_170_volume_connectors_get_member [0.085694s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-83f294f2-c08f-4870-bb06-d3d5a00b8e68 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_whole_disk_image [0.131711s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance [0.098745s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_normal_boot [0.121107s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_171_volume_connectors_get_observer [0.166109s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b4e36ab1-08c1-4862-8b96-cf0da2074eb9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout [3.117755s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_active [0.182883s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot [0.089883s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso [0.084331s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_172_volume_connectors_post_admin [0.134947s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d51953d2-fdc2-4cef-a3ba-f86028ea7a1a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_interface_not_in_all_interfaces [0.177616s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso_boot [0.097680s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_173_volume_connectors_post_member [0.090111s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cb67dd79-57d3-4871-8b3a-6f5ecfbc1399 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart [0.300358s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_render_configdrive [0.114841s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_invalid_chassis_id_subtype [0.171301s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_174_volume_connectors_post_observer [0.140891s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/connectors WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'type': 'ip', 'connector_id': '192.168.1.100'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8a7a9153-ad79-45d8-aa90-131f3f35a66b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track [0.129162s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_invalid_port_id_subtype [0.152025s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track_impossible [0.067513s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_175_volume_volume_connector_id_get_admin [0.190648s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/6217b54b-c139-407e-bed3-c84706a2f13a WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ad13089e-a5f8-417a-a18a-b60445d4eddd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 6217b54b-c139-407e-bed3-c84706a2f13a could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart_bios [0.241080s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_config [0.102299s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_invalid_tlv_value_hex_format [0.180785s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_debug [0.055191s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_176_volume_volume_connector_id_get_member [0.168507s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/c45d7301-e42f-442e-9754-ec5ee0b5bc7e WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-da7be159-b8b2-457a-957c-31a83391ce56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector c45d7301-e42f-442e-9754-ec5ee0b5bc7e could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_lenovo [0.203735s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_floppy [0.087093s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_lldp_none [0.164183s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_177_volume_volume_connector_id_get_observer [0.116100s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/5a13fef2-a4f6-4cbb-9418-f280d5b09012 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-69b13920-2cd4-4b61-86b3-ff1dc324c8a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 5a13fef2-a4f6-4cbb-9418-f280d5b09012 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_params [0.098278s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_178_volume_volume_connector_id_patch_admin [0.113735s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/b1eca922-2905-4ac5-b2cc-34eab439ec5a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-400dde4f-1511-4c3a-b1e6-48264d3f5c40 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector b1eca922-2905-4ac5-b2cc-34eab439ec5a could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_no_port_in_ironic [0.153669s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_exists [0.235696s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_usb [0.170028s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_179_volume_volume_connector_id_patch_member [0.110611s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/f230956f-366e-43d9-9403-a6f97bc7dae3 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4039fa3d-62b9-44a5-aa2b-a918dfd8deea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector f230956f-366e-43d9-9403-a6f97bc7dae3 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_boot_iso [0.088769s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_port_id_subtype_mac [0.158428s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_180_volume_volume_connector_id_patch_observer [0.110219s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/5f44f6c6-9a01-4e53-a60b-495f07dec7d9 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b87ab8a0-464f-4dc5-ad74-98493871dfde X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 5f44f6c6-9a01-4e53-a60b-495f07dec7d9 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_correct_vendor [0.069479s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_missing [0.255559s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_181_volume_volume_connector_id_delete_admin [0.089665s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/c946af35-5e2d-4cf2-973b-4f525434c936 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7fb18c05-0c7e-4a40-b253-9a7f0265604b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector c946af35-5e2d-4cf2-973b-4f525434c936 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_182_volume_volume_connector_id_delete_member [0.129860s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/4a017f60-0d54-4c75-b302-503fd851412d GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-900dcb10-f1e8-4a9a-94f0-ae8ad59701a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 4a017f60-0d54-4c75-b302-503fd851412d could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_port_local_link_connection_already_exists [0.269576s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_183_volume_volume_connector_id_delete_observer [0.108237s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/9b3b1270-b431-47db-8a0d-e661862027ae GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4414b28e-3211-444e-b66b-61c179f0a78c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume connector 9b3b1270-b431-47db-8a0d-e661862027ae could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_184_volume_targets_get_admin [0.145207s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4930a31b-0274-4e93-b223-84a5d2b711ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_valid_data [0.286187s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk [0.478841s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection [0.588090s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_185_volume_targets_get_member [0.116062s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c558d76e-6868-4f29-bd40-f47d02bcae69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection_missing [0.053370s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_kernel_ramdisk [0.050251s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_186_volume_targets_get_observer [0.115059s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-612f89a4-ba8c-40c5-9cda-83accc9648b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_local [0.047256s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_missing [0.056165s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.AddPortsTestCase.test_add_ports [0.270100s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_187_volume_targets_post_admin [0.164009s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-871e4a33-4053-4da9-8253-2cf2c33d8e5e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system [0.089072s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_bios [0.380819s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_multiple_systems [0.073335s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_188_volume_targets_post_member [0.103812s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a549d8e2-2118-4c75-8155-e492b7b6313a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_access_error_retry [0.066370s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.AddPortsTestCase.test_duplicates [0.296303s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_189_volume_targets_post_observer [0.129881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/volume/targets WITH {'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'volume_type': 'iscsi', 'boot_index': 4, 'volume_id': 'test-id'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ff9c3661-dfca-49b3-852a-9b417fe7e5f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_attribute_error [0.082999s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_cleaning [0.253020s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_connection_error_retry [0.121636s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_190_volume_volume_target_id_get_admin [0.127370s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/573c16a2-c4bd-442f-9608-2064f9910d61 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2e6a306f-20f8-4c67-8609-27d6b70ff281 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 573c16a2-c4bd-442f-9608-2064f9910d61 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_all_match [0.176431s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_191_volume_volume_target_id_get_member [0.081381s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/342a4b32-8703-429d-b1cc-735dc6693810 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-78fbb4dc-f792-418f-a663-c01a1fad91f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 342a4b32-8703-429d-b1cc-735dc6693810 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_not_found [0.115921s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready [0.056589s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_192_volume_volume_target_id_get_observer [0.104928s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/ca24c624-c7f2-4a40-b953-952651617118 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a0b496be-2501-4224-bf1f-debdf9c53277 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target ca24c624-c7f2-4a40-b953-952651617118 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready_with_connection_error [0.080571s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_193_volume_volume_target_id_patch_admin [0.082214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/e12cfda5-1d98-4204-9148-a6f095f744f2 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-80d9b801-3a8c-46c5-899e-d2046cf271dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target e12cfda5-1d98-4204-9148-a6f095f744f2 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_first_match_on_skip_list_use_second [0.234011s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service [0.097834s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_194_volume_volume_target_id_patch_member [0.139069s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/bf5514d9-3579-4990-8c0a-e566d68874bb WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ebcdf81e-50dd-49ec-a435-841fc4665762 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target bf5514d9-3579-4990-8c0a-e566d68874bb could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_incorrect_hint [0.132205s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service_error [0.096888s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_195_volume_volume_target_id_patch_observer [0.120836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/6f022bc1-8a89-42de-84a8-73e3c3ec2b63 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-18643dc8-6a2f-42b1-bf53-c3688e9842d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 6f022bc1-8a89-42de-84a8-73e3c3ec2b63 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_system_collection [0.102307s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_local_gb_without_spacing [0.160771s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_system_collection_error [0.053705s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_196_volume_volume_target_id_delete_admin [0.119281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/deb3fb8e-4ab4-4291-bf73-edbfc6ee833a GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e3465116-7b1e-4c5c-880f-721ffe7982d8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target deb3fb8e-4ab4-4291-bf73-edbfc6ee833a could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor [0.055731s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor_error [0.044045s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_197_volume_volume_target_id_delete_member [0.069916s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/1825010c-5d59-4c74-a8c8-e59e843e2229 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0172d4ae-9674-4fea-8f05-a342ed1fb842 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 1825010c-5d59-4c74-a8c8-e59e843e2229 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes [0.795856s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_no_hints [0.140815s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service [0.074423s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service_error [0.042244s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info [0.029081s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_198_volume_volume_target_id_delete_observer [0.164847s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/117b8ec9-2944-4e22-b478-2bbb5f281107 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6a5e5587-f12c-47f9-8258-e7d49c2bb771 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Volume target 117b8ec9-2944-4e22-b478-2bbb5f281107 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme [0.050383s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme_ipv6_brackets_added [0.033042s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_one_matches [0.189920s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme_with_port [0.032179s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported [0.248654s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_address [0.029421s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_auth_type [0.047483s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_root_device_skip_list [0.115381s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca [0.039070s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_system_id [0.045470s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_199_nodes_volume_get_admin [0.252730s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fa5cc6cc-24c2-4fa2-8e29-089bbb63811f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue [0.167928s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_size_invalid [0.091370s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca [0.075318s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_info [0.035040s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_system_id [0.036096s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_200_nodes_volume_get_member [0.137790s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e85f8873-c72e-4fa6-a248-c74e9f035ef1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_size_string [0.154758s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_path_verify_ca [0.104452s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue_bios [0.245805s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_auth_type [0.063703s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_201_nodes_volume_get_observer [0.169010s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b78d58a7-1c04-4a06-bcb4-5608b9391f70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:volume:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_zero_size [0.185763s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_202_nodes_volume_connectors_get_admin [0.137404s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f77f9031-1b82-4710-a1b9-3d573f4fb7c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_capath [0.165351s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_exception_ignored [0.099285s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called [0.254005s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_not_check_inspecting [0.041820s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_not_finished [0.073312s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca [0.197010s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_not_inspecting [0.075969s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_203_nodes_volume_connectors_get_member [0.268572s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-533d1bcb-8366-4d9f-81ae-ed0f790ff2b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm [0.214118s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_not_inspector [0.058619s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_with_root_prefix [0.098765s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_clean_up_failed [0.094621s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_error [0.053905s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__fail_validation [0.126655s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_204_nodes_volume_connectors_get_observer [0.189673s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/connectors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ec1e599f-5eb3-415c-8efb-eb20a1df4589 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_error_dont_store_inventory [0.038286s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_ok [0.058467s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_ok_store_inventory [0.047471s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi [0.169337s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_ok_store_inventory_nostore [0.035504s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic [0.375712s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_boot_clean_up_failed [0.077382s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_managed [0.067684s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi_and_unknown [0.181339s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_managed_no_power_off [0.111692s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios [0.259364s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_multiple_fc_wwns [0.151671s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_managed_no_power_off_on_fast_track [0.124021s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_205_nodes_volume_targets_get_admin [0.605881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f5d6fb6b-8a91-469c-994c-a62d7695b4a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_raises_with_insufficient_data [0.147166s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_network_clean_up_failed [0.138998s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_206_nodes_volume_targets_get_member [0.109721s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6beda0f5-5ab7-4ca9-bb9c-9cd864ed34e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi [0.289024s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_unmanaged [0.071913s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_single_path [0.174478s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_207_nodes_volume_targets_get_observer [0.094030s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/volume/targets WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-91c011c2-2efb-4c52-81f8-aca7e169c9f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_unmanaged_force_power_off [0.135968s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_208_drivers_get_admin [0.109176s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-344c4863-13d8-438c-a252-2c2a73935fb5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_unknown_raises_excption [0.179839s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_uefi [0.261591s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_fail [0.124840s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_209_drivers_get_member [0.097844s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-09c1690a-1f5f-4415-808b-d9dde350f613 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_kernel [0.131351s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_210_drivers_get_observer [0.107041s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b30ba1d3-99ee-4c8e-bc6f-8b809250b1f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_ok [0.118356s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_211_drivers_driver_name_get_admin [0.122417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b647b8a4-aebd-43f1-bfaf-2040e4fe5e88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_ramdisk [0.129424s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_212_drivers_driver_name_get_member [0.156015s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-55495407-a147-4845-a48a-771370111938 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_no_port [0.161688s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_213_drivers_driver_name_get_observer [0.144034s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e45e58a5-d8f8-4125-b7bd-86b48a3445e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good [0.197685s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_214_drivers_properties_get_admin [0.110878s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-7a202541-d220-477b-aa50-e73d59081a8a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_fail [0.541585s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_215_drivers_properties_get_member [0.085106s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-cd038f5d-bc3c-47da-a419-0992739bbad0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good_whole_disk_image [0.128520s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_ok [0.139712s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_216_drivers_properties_get_observer [0.076362s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-dc96b3ba-a54d-46e6-a874-16d16fb0c53c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection [0.092884s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_called_with_target_and_connector [0.910589s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__cleanup_vmedia_boot_ok [0.079115s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_217_drivers_raid_logical_disk_properties_get_admin [0.094108s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-22d523c5-1458-4b8a-bbe7-38bb4e1af2f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection_no_inspection_ramdisk [0.100441s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_fail [0.065805s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_218_drivers_raid_logical_disk_properties_get_member [0.121506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ec4e1806-9695-4b9f-9876-5d3fdefe8916 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_fail_http_url_not_set [0.099325s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_fails_without_connectors [0.192962s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_ok [0.154227s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_no_volumes [0.090911s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_missing_stage2_id [0.125864s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_219_drivers_raid_logical_disk_properties_get_observer [0.146175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/raid/logical_disk_properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-bde2cf36-5c6b-48f8-93b5-0a3efff22056 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:get_raid_logical_disk_properties\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_no_image_source_for_local_boot [0.073640s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_fail [0.129387s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure [0.100497s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure_no_attach_error [0.099645s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_non_local [0.118836s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_220_drivers_vendor_passthru_methods_get_admin [0.211529s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e627d3bb-ac02-4acd-aa1f-35f97137791f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_ok [0.158988s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure [0.074733s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_floppy_image_name [0.072008s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_skip_check_write_image_false [0.120729s] ... ok {2} ironic.tests.unit.drivers.test_base.TestDeployInterface.test_warning_on_heartbeat [0.038426s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_iso_name [0.066111s] ... ok {2} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_boot_mode_default_impl [0.038675s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure_raises_exception [0.134668s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_221_drivers_vendor_passthru_methods_get_member [0.191144s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-0e438b50-6afe-4549-a2a6-bf3322630323 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option [0.044697s] ... ok {2} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_indicator_state_default_impl [0.088018s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option_non_existed_root [0.066560s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_should_write_image [0.148687s] ... ok {2} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_mac_addresses [0.073955s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_222_drivers_vendor_passthru_methods_get_observer [0.198265s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-bac4520d-45a0-449d-ac1d-a9f0c89ae7e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_deprecated [0.101277s] ... ok {2} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_boot_modes_default_impl [0.062212s] ... ok {2} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_indicators_default_impl [0.054778s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_in_share [0.091840s] ... ok {2} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_inject_nmi_default_impl [0.041048s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fail_on_unknown_volume_types [0.199416s] ... ok {2} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_boot_mode_default_impl [0.036780s] ... ok {2} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_indicator_state_default_impl [0.048022s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_223_drivers_vendor_passthru_get_admin [0.196414s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c475b137-bd62-480a-afb0-86d893aeb498 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params [0.115902s] ... ok {2} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_default_interfaces [0.160522s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_224_drivers_vendor_passthru_get_member [0.154621s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-3fc3dc6a-7bd8-4d52-89e7-2fdc2e8f1717 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_conf [0.140327s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_fc_conn_iscsi_target [0.274538s] ... ok {2} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_agent_rescue [0.097864s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_driver_info [0.090727s] ... ok {2} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_bios_configuration [0.047462s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_225_drivers_vendor_passthru_get_observer [0.154810s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru?method=test WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-264c9b74-4c0a-436b-9745-e5b430049fa6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_not_in_share [0.091567s] ... ok {2} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_boot_configuration [0.082520s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_iscsi_conn_fc_target [0.188101s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_226_drivers_vendor_passthru_post_admin [0.174426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-4803a428-0cf7-457c-926a-3410094af149 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_inspector [0.103601s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_invalid [0.140489s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_when_fc_connectors_unequal [0.176000s] ... ok {2} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_ipmitool_power [0.114585s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_missing [0.119718s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_227_drivers_vendor_passthru_post_member [0.149010s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-54d465ce-64c6-464d-aa5a-9576d8c0c23d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_raid_configuration [0.074518s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_deprecated [0.116676s] ... ok {2} ironic.tests.unit.drivers.test_redfish.RedfishHardwareTestCase.test_default_interfaces [0.073614s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs [0.041792s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_228_drivers_vendor_passthru_post_observer [0.168160s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c608e794-b13a-48f3-bba2-e254339e8b40 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled [0.265381s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_name_ok [0.100904s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_IPA_command_fail [0.082644s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_command_fail [0.023295s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_229_drivers_vendor_passthru_put_admin [0.121876s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c4e23209-1be8-4eda-8c41-41dd7574c0e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_fs [0.026029s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_swift [0.041620s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_url_ok [0.152944s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_unkown [0.031660s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_230_drivers_vendor_passthru_put_member [0.129258s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-858e995f-de4f-419c-ad22-701dae8d0833 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_with_label [0.034800s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_get_ramdisk_logs_file_name [0.022120s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_glance_ok [0.099731s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_fc_boot_no_connectors [0.259465s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_local [0.045780s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_231_drivers_vendor_passthru_put_observer [0.130638s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/drivers/fake-driverz/vendor_passthru?method=test WITH None GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-8e232708-30a9-4cca-a44e-ee5651f41583 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:driver:vendor_passthru\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_http_ok [0.106204s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_swift [0.082670s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_232_drivers_vendor_passthru_delete_admin ... SKIPPED: not updated for scope testing {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_create [0.073934s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_iscsi_boot_no_connectors [0.212918s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_https_ok [0.105640s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_233_drivers_vendor_passthru_delete_observer ... SKIPPED: not updated for scope testing {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_234_nodes_bios_get_admin [0.094594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e35ae1f5-a53f-4345-b0df-1394f54d7fb2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_invalid [0.121673s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_connectors_and_boot [0.217666s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_235_nodes_bios_get_member [0.096064s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-978149f5-830b-408c-97ad-961476b643e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_uuid_ok [0.106067s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_236_nodes_bios_get_observer [0.088557s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-346230c9-497f-4c47-b964-d55730e0beb3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_connectors [0.100808s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_without_boot_iso_ok [0.130841s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_237_nodes_bios_bios_setting_get_admin [0.086959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-55e2e7cd-ed33-4bac-8d37-620c950dcec3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_targets [0.139362s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_238_nodes_bios_bios_setting_get_member [0.072370s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-097b703f-924b-44d8-9b3d-397861b1c117 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_delete [0.562470s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_239_nodes_bios_bios_setting_get_observer [0.105685s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/bios/FAKE_SETTING WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7d1838e7-5ca0-437e-831a-99aa6aefd5c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get [0.051450s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_connector [0.173824s] ... ok {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get_by_node_id [0.035196s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_create_ok [0.293245s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_240_conductors_get_admin [0.084034s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b3908169-f10e-4340-be73-f1579792919d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_create [0.087235s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_targets [0.105994s] ... ok {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_delete [0.030715s] ... ok {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_save [0.024575s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_241_conductors_get_member [0.130220s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-132a997d-73d1-4ca7-9a8b-90df8d59a323 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_no_settings [0.081798s] ... ok {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_save [0.033546s] ... ok {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_create_and_update [0.049320s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_fetch_ok [0.227698s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_should_write_image [0.083995s] ... ok {2} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_delete_nochange [0.048241s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_242_conductors_get_observer [0.144925s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-db841bb5-7d2b-4c5a-8eb1-38e29e935335 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled [0.080848s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_list [0.091117s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command [0.036049s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_243_conductors_hostname_get_admin [0.100725s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e82b1443-239b-43ac-affa-4402130d8efa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_file [0.175276s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_agent_client [0.034739s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_load [0.101066s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code [0.061759s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy [0.038300s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_refresh [0.091700s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image [0.175370s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy_conflict [0.072415s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register [0.061338s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_okay_error_typeerror_embedded [0.046243s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_hardware_interfaces [0.037835s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect [0.055997s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group [0.031651s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_uppercased [0.030750s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_is_running [0.059196s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image_exception [0.200055s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_with_update [0.043465s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_not_running [0.033044s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_244_conductors_hostname_get_member [0.440598s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8fcd4a33-7d75-4229-9d3a-83ce1fc3ae26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_no_command_running [0.044456s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__remove_share_file [0.093390s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_update_existing_true [0.098055s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_wrong_command_running [0.078897s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_with_invalid_group [0.068643s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_245_conductors_hostname_get_observer [0.147303s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-65cef909-3d0a-458a-a910-910c4e8d28f8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:conductor:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_json [0.078483s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_save [0.074373s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_post [0.044935s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_with_parameters [0.173953s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_touch [0.037248s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_poll [0.028047s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister [0.042321s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_246_allocations_post_admin [0.156403s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-868efbef-a145-4a33-bdef-8d9ec160f507 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify [0.073036s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister_all_hardware_interfaces [0.042796s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_config [0.026930s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_missing [0.042754s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_247_allocations_post_member ... SKIPPED: This endpoint's behavior supports allocation creation as a member with the new Role Based Access Control changes. Thus this test cannot both ensure prior and post-change behavior as it is actually valid moving forward. {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_without_parameters [0.172724s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable [0.042628s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_set [0.033991s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable_in_driver_info [0.041580s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_missing [0.037913s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_internal [0.022683s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_default [0.026424s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_invalid_file [0.034584s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_body [0.020742s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_non_default [0.048807s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url [0.019301s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_248_allocations_post_observer [0.165115s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-04643fe3-7e07-4d2f-aca5-6c1cf4b0efc6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:create_restricted\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_deploy [0.170033s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_remove [0.031727s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url_fail [0.034470s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_missing [0.028674s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_content_type_header [0.042424s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_set [0.064078s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_rescue [0.109775s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_execute_clean_step [0.049801s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_missing [0.033230s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_execute_service_step [0.051470s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed [0.058120s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_default [0.034971s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_249_allocations_get_admin [0.196844s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ea40da97-9912-48ea-8c70-33c9e345b5ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_deprecated [0.048403s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_non_default [0.045676s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue [0.071201s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_on_rebuild [0.043959s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_exception [0.030059s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_exc [0.061921s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_250_allocations_get_member [0.146391s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f9f8bc29-52f1-48a5-a24e-f548eb3830e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_remove [0.105392s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_ok [0.044118s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback [0.048486s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_parse_deploy_info_ok [0.074510s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_missing [0.089521s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_251_allocations_get_observer [0.099554s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b7590c70-6468-428b-8651-07db1ac69c00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:allocation:list\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback_restricted [0.084373s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_deploy [0.076252s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_set [0.067039s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_clean_steps [0.045557s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_252_allocations_allocation_id_get_admin [0.118545s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/8e4a880a-636f-485b-a018-fd7ef407f6d3 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7cd4fa61-bf3c-41b1-991b-bef984336403 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 8e4a880a-636f-485b-a018-fd7ef407f6d3 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_missing [0.061812s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_rescue [0.084902s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status [0.055463s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_default [0.043950s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_253_allocations_allocation_id_get_member [0.085208s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/cbf873bc-44a0-497b-809e-a3b52376223c WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e7b0d79f-9786-45c7-b362-277d66693413 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation cbf873bc-44a0-497b-809e-a3b52376223c could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_non_default [0.040352s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_instance [0.085622s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_no_retries [0.072777s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_remove [0.056622s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_retries [0.063706s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_missing [0.031521s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_254_allocations_allocation_id_get_observer [0.115444s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/026acd10-3120-426e-8459-920930de3ba7 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-120afab6-12fc-4372-80b7-ab628d17a224 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 026acd10-3120-426e-8459-920930de3ba7 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_set [0.028383s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_verify [0.045957s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_ramdisk [0.130859s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_missing [0.042712s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_service_steps [0.047671s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_ramdisk_rescue [0.087522s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_default [0.062542s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_255_allocations_allocation_id_patch_admin [0.141032s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/0bfef422-7d2c-4bc0-87d2-fdae0d5a4c65 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-022c5c4a-622e-4433-9283-849f7641e953 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 0bfef422-7d2c-4bc0-87d2-fdae0d5a4c65 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_service_steps_older_client [0.062076s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_get_properties [0.060422s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader [0.053567s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_non_default [0.083406s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader_with_prep [0.059434s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_256_allocations_allocation_id_patch_member [0.124989s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/4524e463-294d-4118-8618-da242c7d8cb8 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-94fa0fdd-f486-472a-b179-db43bd12b4ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 4524e463-294d-4118-8618-da242c7d8cb8 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_remove [0.073964s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_power_off [0.060045s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance [0.144797s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_set [0.057333s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_257_allocations_allocation_id_patch_observer [0.176055s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/33c0be2a-f516-4add-a620-f5d3383af8ba WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-df2a6dbe-3dc3-4613-a276-433cbb0d923e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation 33c0be2a-f516-4add-a620-f5d3383af8ba could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_unset [0.093793s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_active [0.174391s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set [0.059755s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_258_allocations_allocation_id_delete_admin [0.111537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/e8bb50fd-a0aa-4535-a44c-a2d1f26f91a5 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e8916829-e82d-469c-98a3-eff3b4ede022 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation e8bb50fd-a0aa-4535-a44c-a2d1f26f91a5 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set_no_remove [0.069989s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_unset [0.051651s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_missing [0.066700s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_set [0.077951s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_missing [0.064704s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_259_allocations_allocation_id_delete_member [0.320535s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/d82ea65a-cf3b-4fad-9cfd-771ecc4b9fab GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fe255707-565c-43d5-b80f-638863e1e07f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation d82ea65a-cf3b-4fad-9cfd-771ecc4b9fab could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_default [0.046939s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_non_default [0.044582s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_remove [0.033467s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_kickstart [0.522412s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_missing [0.030345s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_sync [0.729271s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_untouched [0.045606s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_260_allocations_allocation_id_delete_observer [0.242515s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/ec9e3a09-0c47-4d04-8462-6c9b3923342d GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ff83e6fd-1390-46c3-bc97-6278d7faa962 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Allocation ec9e3a09-0c47-4d04-8462-6c9b3923342d could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_bios [0.067742s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_kickstart_bios [0.113469s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_missing [0.054535s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove [0.041868s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback [0.079119s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_lenovo [0.075491s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback_bios [0.048237s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove_in_maintenance [0.068415s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_supported_missing [0.037421s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_ramdisk_pxe_conf_exists [0.098503s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_261_nodes_allocation_get_admin [0.216484s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b14ccbf8-09ab-4a06-b6a9-95e0b06f68e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_other_arch [0.087170s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_supported_set [0.053493s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_unsupported_missing [0.034582s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_uefi [0.055961s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_ramdisk_pxe_conf_missing [0.137983s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_unsupported_set_no_remove_default [0.060828s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_uefi [0.099604s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_unsupported_set_no_remove_non_default [0.064858s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_262_nodes_allocation_get_member [0.273620s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f20bf15a-4899-4116-b1d4-bd4d2595965b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template [0.095995s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_unsupported_set_remove [0.104198s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk [0.214367s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_missing [0.039476s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none [0.093743s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_set [0.042206s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_bios [0.100150s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none_bios [0.079545s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_missing [0.082237s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_263_nodes_allocation_get_observer [0.240132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f6808b8d-7ab3-4478-b9d8-bed03850afe2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Resource could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_override_pxe_fallback [0.069853s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_default [0.069327s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_bios_without_by_arch [0.030000s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_in_by_arch [0.026421s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_not_in_by_arch [0.024035s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_cleaning [0.189246s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property [0.023906s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property_bios_default [0.030650s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_non_default [0.107087s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_264_nodes_allocation_delete_admin [0.172256s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cdd997b5-39bc-4c44-8c7c-1ce9a492ddab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_uefi_without_by_arch [0.026450s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_bios_without_by_arch [0.047786s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_remove [0.079290s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_in_by_arch [0.025225s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_conflicting_boot_modes [0.167635s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_not_in_by_arch [0.050652s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_missing [0.073646s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_265_nodes_allocation_delete_member [0.160109s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ac6b5842-34e6-4d09-a291-8bd4b2098360 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property [0.041273s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property_bios [0.030883s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_set [0.083163s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_per_node [0.041787s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported [0.149997s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_missing [0.062764s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_uefi_without_by_arch [0.069029s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_default [0.023370s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_266_nodes_allocation_delete_observer [0.176584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f4811850-47bf-4b72-93e9-43e957590b01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 22e26c0b-03f2-4d2e-ae87-c02d7f33c000 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default [0.025545s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_cleaning_vif_port_id [0.070162s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_remove [0.054782s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_missing [0.035478s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_rescue [0.184998s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_provisioning_vif_port_id [0.066842s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_set [0.027729s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_267_deploy_templates_post_admin [0.157995s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f2f85397-60b1-4ad1-9314-c054192514f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_missing [0.041373s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_vif_port_id [0.085797s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_no_remove_non_default [0.040645s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images [0.031644s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images_checksum [0.027129s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_rescue_bios [0.164660s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_268_deploy_templates_post_member [0.164207s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9d378f75-93f2-4e39-ac14-a025074e2bc2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images_fail [0.065987s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_anaconda_deploy [0.092404s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_not_called [0.175371s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_269_deploy_templates_post_observer [0.140193s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_TEST_TEMPLATE', 'steps': [{'interface': 'deploy', 'step': 'noop', 'args': {}, 'priority': 0}]} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e1c2e4bc-660c-4e85-9940-5900c6775de2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:create\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_default_value [0.069543s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_remove [0.296181s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_missing [0.029611s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_270_deploy_templates_get_admin [0.107377s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b1aeea43-f785-4919-91ee-542c486ca838 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_fail [0.080634s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_set [0.036323s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_missing [0.033179s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_from_keystone [0.049662s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_default [0.035681s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_271_deploy_templates_get_member [0.118443s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-916f1126-c69b-4dd6-a34a-803e2939e1f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_none [0.074062s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_non_default [0.061136s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_remove [0.062612s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_272_deploy_templates_get_observer [0.106758s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a7802765-ab1f-45de-a1ce-f75421845d36 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy [0.114269s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_on_bm [0.371914s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_missing [0.038459s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy_false [0.070204s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_set [0.059232s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid [0.041881s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_273_deploy_templates_deploy_template_id_get_admin [0.135594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/48abe179-6c08-4662-ac1b-716f349407d1 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0ece0c2f-0330-455a-b72c-0898f8d25431 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_missing [0.061447s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid_false [0.028124s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_no_remove_non_default [0.059303s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_remove [0.024904s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_default [0.024331s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_274_deploy_templates_deploy_template_id_get_member [0.162872s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/91daf911-d8ab-4502-a5a2-56097096558e WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fe44b2be-82cc-4329-b096-dc2fc4097ab5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic [0.295352s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_non_default [0.052926s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state [0.182786s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_missing [0.041238s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_set [0.028379s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing [0.026321s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing_remove [0.023423s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_275_deploy_templates_deploy_template_id_get_observer [0.166398s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/946db7a0-4656-456b-8915-796c83633199 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b4f96abe-9157-4a6c-8af4-ea369aa69fcd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:get\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object [0.025391s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_map_version_bad [0.024524s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_old [0.040027s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios [0.253879s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs [0.259142s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_as_dict [0.050295s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_276_deploy_templates_deploy_template_id_patch_admin [0.160993s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/f7b86235-19a7-4977-a4ae-6b50024113cc WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-80920f47-f14e-4070-a1cd-8fadc2ff99c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object [0.039147s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object_list [0.035140s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_never [0.127799s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_assign_value_without_DictCompat [0.044425s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_base_attributes [0.024879s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_277_deploy_templates_deploy_template_id_patch_member [0.149171s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/a3f0cbb4-9618-4708-9c9f-f8548112f801 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6f8e6051-e71e-4c33-946c-f2906d7c06a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_objects.TestObject.test_changed_1 [0.022808s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_changed_2 [0.019868s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi [0.249465s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_changed_3 [0.026368s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_changed_4 [0.027108s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_278_deploy_templates_deploy_template_id_patch_observer [0.125221s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/1367a3d6-7f35-4492-adfa-2ed2b842354f WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-134febab-2647-4f8a-879b-b6c0c8af9a52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:update\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_overide [0.178532s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_changes_in_primitive [0.036102s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_uefi [0.111134s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_contains [0.023490s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_new [0.052805s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_279_deploy_templates_deploy_template_id_delete_admin [0.126115s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/add5cac6-b4c0-4267-94a9-f7c318a8c492 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f0f9f1cc-643d-4c94-904e-2f897a894967 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old [0.048739s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_missing_deploy_kernel [0.121694s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old_keep [0.031619s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_same [0.025346s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_dehydration [0.025225s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_missing_deploy_ramdisk [0.093027s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_280_deploy_templates_deploy_template_id_delete_member [0.124043s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/6e4aa2d0-4d64-439b-b667-fa96810f2f05 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-29de9a16-58f4-47f2-bc5d-32ffe96a87ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db [0.068320s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_downgrade [0.033167s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_no_port [0.103501s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_pinned [0.023720s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get [0.024241s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_281_deploy_templates_deploy_template_id_delete_observer [0.140538s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/8644b1fe-a1b5-4fb9-8d09-71cc629073f9 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f80c87d2-53b5-4434-8604-6bb744bda188 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Access was denied to the following resource: baremetal:deploy_template:delete\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_no_poweroff [0.425130s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get_changes [0.032747s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_good [0.114148s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned [0.058643s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_config_whole_disk_image [0.100120s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_good_whole_disk_image [0.062574s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned_2versions [0.044399s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_iscsi_boot [0.087321s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_inspection [0.079059s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_no_pin [0.082688s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_pxe_config_whole_disk_image [0.054361s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned [0.067761s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_inspection_no_inspection_ramdisk [0.079860s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_bad [0.033965s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_elilo_config_whole_disk_image [0.063120s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_no_myobj [0.024897s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_grub_config_whole_disk_image [0.036751s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_get_updates [0.030517s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_kickstart_fail_http_url_not_set [0.093146s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_282_chassis_post_admin [0.402120s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-de3c97bc-a92d-4dd9-97ae-d75d853c1321 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_ipxe_config_whole_disk_image [0.039339s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_hydration [0.026064s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_hydration_bad_ns [0.031888s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_hydration_type_error [0.028446s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_kickstart_missing_stage2_id [0.104700s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_load [0.046556s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_load_in_base [0.032454s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_283_chassis_post_member [0.164228s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b64c1208-41a9-407d-93c3-7931f4861fa5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_already_raw [0.186365s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_no_image_source_for_local_boot [0.101693s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_loaded_in_primitive [0.062089s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_obj_attr_is_set [0.023386s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_non_local [0.062042s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_obj_constructor [0.019781s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_284_chassis_post_observer [0.123255s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-804c9a09-c75c-41ae-a576-91dc715d4fca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:create\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_objects.TestObject.test_obj_fields [0.050592s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_skip_check_write_image_false [0.087666s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_object_inheritance [0.030634s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_false [0.026237s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_already_raw_keeps_md5 [0.193906s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_true [0.023704s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_object_property [0.029311s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_285_chassis_get_admin [0.111894s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-fbb3ea7a-da42-40e2-8481-323a4f18aeef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_objects.TestObject.test_object_property_type_error [0.031561s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_orphaned_object [0.021633s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_refresh_object [0.019868s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_286_chassis_get_member [0.080487s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-a0bda176-9f6e-4c97-b0ea-2ca18425605e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.objects.test_objects.TestObject.test_static_result [0.026496s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_supports_version [0.026192s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_unknown_objtype [0.021332s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_file_image [0.184067s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config [0.167799s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_updates [0.030284s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObject.test_with_alternate_context [0.026792s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_287_chassis_get_observer [0.125164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e5471516-3974-4456-b9dc-d78e60c9f0e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestExclusiveWriteOrPass.test_write [0.047884s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_corrupted [0.118445s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestExclusiveWriteOrPass.test_write_custom_ioerror [0.030640s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestExclusiveWriteOrPass.test_write_would_block [0.039251s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_288_chassis_detail_get_admin [0.123354s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-8fb54621-34f3-42fa-98f1-5e2546ddf4d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw [0.181882s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_failed [0.061474s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestExclusiveWriteOrPass.test_write_would_block_too_many_times [0.033455s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__allowlist_mac [0.028902s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config [0.066097s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__allowlist_unknown_hosts [0.041894s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_289_chassis_detail_get_member [0.135552s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-10ac98db-db96-4108-8f9d-0f931ccc97db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw_drops_md5 [0.176181s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image [0.115161s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_290_chassis_detail_get_observer [0.171035s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-dd14277f-2052-4ce8-9d39-eb2e496414b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_already_raw [0.118442s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_dinfo [0.058307s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_291_chassis_chassis_id_get_admin [0.177795s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-d0ae2b95-13cb-41de-b640-206496c471ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__configure_removedlist_allowlist [0.473229s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__configure_removedlist_denylist [0.021401s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__denylist_mac [0.022512s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_failed [0.557109s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__denylist_unknown_hosts [0.036087s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__get_allowlist [0.026510s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_skipped [0.056411s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_292_chassis_chassis_id_get_member [0.215070s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-d3c2fdb2-070b-4677-93b4-57de6dbd5034 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__get_denylist [0.052623s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_none_raid_adapter_profile [0.069097s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__get_no_allowlist [0.027568s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__get_no_denylist [0.052825s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_raid_level_is_none [0.061690s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestUpdate.test_no_update [0.052416s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_raid_level_outside_list [0.079334s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestUpdate.test_only_allow [0.029450s] ... ok {2} ironic.tests.unit.pxe_filter.test_dnsmasq.TestUpdate.test_only_deny [0.032799s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_iinfo [0.507608s] ... ok {2} ironic.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute [0.033843s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_without_raid_level [0.101543s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_293_chassis_chassis_id_get_observer [0.290758s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-872d6003-277d-47a8-a1e5-011d412c7354 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:get\\\": \\\"(role:reader and system_scope:all) or (role:service and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__commit_raid_config_with_logical_drives [0.121284s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_294_chassis_chassis_id_patch_admin [0.115403s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-fcdd3f3a-23f2-45f5-aa8e-eb4e540fbb43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"(role:member and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_0 [0.049488s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_md5_not_permitted [0.224160s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_295_chassis_chassis_id_patch_member [0.087230s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-363491ed-7e0f-4dfe-ba29-fabb59831bac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"(role:member and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_1 [0.046216s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_10 [0.054782s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_296_chassis_chassis_id_patch_observer [0.105693s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH [{'op': 'replace', 'path': '/description', 'value': 'meow'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c1c56287-90c3-426b-b822-779ea2332a8d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:update\\\": \\\"(role:member and system_scope:all) or rule:service_role\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_no_force_raw [0.147873s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_5 [0.069172s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_50 [0.038502s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_6 [0.041631s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_297_chassis_chassis_id_delete_admin [0.123748s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b033401c-36d5-4c83-811c-cd742659cdf5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_with_physical_disk [0.046043s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_remote_checksum_image [0.159328s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_difference_physical_disks_type [0.062560s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_298_chassis_chassis_id_delete_member [0.095834s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-93673a69-7940-4e71-b35d-bb1f8928b19d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_duplicated_physical_disks [0.059027s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_not_enough_valid_disks [0.043554s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_299_chassis_chassis_id_delete_observer [0.092703s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-cf88cb97-86ee-4f8b-a69c-bf241f9c1cbd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"\\\"baremetal:chassis:delete\\\": \\\"role:admin and system_scope:all\\\" requires a scope of ['system'], request was made with project scope.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_incorrect_valid_disks [0.088186s] ... ok Exception ignored in: Traceback (most recent call last): File "/usr/lib64/python3.9/tempfile.py", line 461, in __del__ File "/usr/lib64/python3.9/tempfile.py", line 457, in close FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmpnkbojujn/tmp9ccf8_o8' {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_remote_checksum_sha256 [0.253075s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_insufficient [0.040311s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_300_node_history_get_admin [0.132547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8ddd944d-84f5-4444-b9ca-16ec83c35bb5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_not_enough_disks [0.046073s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_outside_valid_disks_1 [0.061287s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_301_node_history_get_member [0.137274s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4334c161-eb37-4f98-8d08-3d5401598d9a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_outside_valid_slots_2 [0.042314s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_remote_checksum_sha512 [0.206786s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_without_physical_disks [0.069787s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_302_node_history_get_observer [0.107162s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8759358e-e88f-473a-a73d-93021ea3dedd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address [0.116727s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_remote_image_via_http_verified [0.187415s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_VIF_MAC_update_fail [0.061507s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_303_node_history_get_entry_admin [0.160482s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/784406e1-3648-4fb0-9b89-5f9c7d4f97e6 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8d7c01da-ba32-48ce-8302-fb759da41e34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_boot_iso_only [0.062179s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_no_vif_id [0.070832s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id ... SKIPPED: https://bugs.launchpad.net/ironic/+bug/2024994 {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_fail ... SKIPPED: https://bugs.launchpad.net/ironic/+bug/2024994 {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_no_vif_id ... SKIPPED: https://bugs.launchpad.net/ironic/+bug/2024994 {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_extra_add_new_key ... SKIPPED: https://bugs.launchpad.net/ironic/+bug/2024994 {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_message_format_failure ... SKIPPED: https://bugs.launchpad.net/ironic/+bug/2024994 {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good [0.061339s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image [0.038227s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image_anaconda [0.026510s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_missing_image_source [0.025976s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_noportgroup [0.164587s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_kernel [0.073662s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_304_node_history_get_entry_member [0.250762s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/12c6eab4-6155-45f2-922d-49a0754071cc WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-65670b9e-f626-4b5e-884a-5880c25cf291 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_ramdisk [0.050734s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_ramdisk_deploy [0.033208s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_whole_disk_image [0.032797s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_redfish_kernel_param_config [0.040470s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_nostandalone_ports [0.184456s] ... ok {0} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_305_node_history_get_entry_observer [0.187284s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/2e830ea1-a286-4c7f-9b62-6f7cb78544c9 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8e34d732-dd16-4b0e-a314-e971f8e29487 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_disable_audit_request [0.033896s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist [0.105165s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_standalone_ports [0.125478s] ... ok {0} ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request [0.088540s] ... ok {0} ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request_error [0.063298s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_attempts_port_creation_blindly [0.132051s] ... ok {0} ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_disable [0.097520s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_mac_exception [0.098819s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_noportgroup [0.195784s] ... ok {0} ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_enable [0.037655s] ... ok {0} ironic.tests.unit.common.test_args.ValidateTypesTest.test_types [0.021746s] ... ok {0} ironic.tests.unit.common.test_cinder.TestCinderUtils.test__create_metadata_dictionary [0.036167s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc [0.136095s] ... ok {0} ironic.tests.unit.common.test_cinder.TestCinderUtils.test__get_attachment_id [0.049839s] ... ok {0} ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_attached [0.037817s] ... ok {0} ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_available [0.034635s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_nostandalone_ports [0.249904s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_and_mac [0.143197s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_dynamic_driver_interfaces_set [0.082929s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface [0.035008s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface_instance_info_override [0.038277s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_and_mac_and_uuid [0.092081s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_standalone_ports [0.185698s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_interfaces [0.070221s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_network_interface_instance_info_override [0.028152s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_and_mac_not_found [0.105117s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface [0.028982s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_not_found [0.047097s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface_default_from_conf [0.047038s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_wrong_state [0.058987s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_mac_not_found [0.058678s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_noportgroup [0.210580s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_node_update_dynamic_driver_set_interfaces [0.107589s] ... ok {0} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_none_network_interface [0.028860s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_mac_wrong_state [0.052642s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_duplicated_entry [0.026365s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_empty_entry [0.042095s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_macs [0.066599s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_init_checks_unsupported [0.062610s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_macs_partial [0.051680s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_load_error_if_driver_enabled [0.032587s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_unknown_bmc_and_mac [0.059368s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_no_driver_load_error_if_driver_disabled [0.069161s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_uuid [0.048525s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_nostandalone_ports [0.320966s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_uuid_and_unknown_macs [0.080494s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_uuid_not_found [0.058937s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_standalone_ports [0.166786s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_uuid_wrong_state [0.087001s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_conflicting_bmc_and_uuid [0.110701s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_noportgroup [0.125955s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_wrap_in_driver_load_error_if_driver_enabled [0.356865s] ... ok {0} ironic.tests.unit.common.test_driver_factory.NewFactoryTestCase.test_new_driver_factory_unknown_entrypoint [0.026401s] ... ok {0} ironic.tests.unit.common.test_driver_factory.StorageInterfaceFactoryTestCase.test_build_interface_for_task [0.054321s] ... ok {0} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit [0.021346s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_conflicting_macs [0.135122s] ... ok {0} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit [0.050403s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_nostandalone_ports [0.176739s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_forbidden_converts_to_imagenotauthed [0.026073s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_notfound_converts_to_imagenotfound [0.022183s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_file_url [0.031091s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_standalone_ports [0.125488s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_no_data [0.054221s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_conflicting_macs_and_bmc [0.186336s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address [0.061638s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_fail [0.052213s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_conflicting_macs_and_uuid [0.110120s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_no_vif [0.059618s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_duplicate_bmc [0.079929s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_nopxe_ports [0.095310s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_duplicate_bmc_and_unknown_mac [0.061485s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_duplicate_bmc_resolved_by_macs [0.042947s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_pxe_ports [0.058613s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_no_input [0.051941s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_IPMI_version_1_5 [0.028644s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_pxe_ports_exc [0.078973s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_cipher_suite [0.036888s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_cipher_suite_error_noconfig [0.036647s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_nopxe_ports [0.061351s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_cipher_suite_set_with_error_config [0.034894s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_cipher_suite_set_with_error_noconfig [0.038815s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_exception [0.047802s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_pxe_ports [0.136082s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_first_call_to_address [0.034326s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_second_call_to_address_no_sleep [0.027341s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_remove_address [0.063166s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_noports [0.061794s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_nopxe_ports [0.058773s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_second_call_to_address_sleep [0.311719s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_try_different_cipher_suite [0.061983s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_pxe_ports [0.248402s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_with_retries [1.036771s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_makes_datetimes [0.051872s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_nopxe_ports [0.083500s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_two_calls_to_diff_address [0.099274s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_passes_through_to_client [0.061770s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_check_exit_code [0.039619s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_pxe_ports [0.063156s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_image_not_active [0.038551s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_dual_bridging [0.039605s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_no_authtoken_in_the_context [0.037483s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_empty_username [0.060284s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach [0.108961s] ... ok {0} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_automatic_retry [0.063459s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_ironic_retries [0.039630s] ... ok {0} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_driver_not_found [0.034127s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_port [0.033108s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node [0.074411s] ... ok {0} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success [0.054586s] ... ok {0} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success_groups [0.047886s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node_failure [0.068655s] ... ok {0} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_reset_interval [0.049150s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_single_bridging [0.166173s] ... ok {0} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_reset_interval_not_happen_sqlite [0.044228s] ... ok {0} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_uncached [0.024302s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_failure [0.123599s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_connerror [0.024002s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_timeout [0.072107s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_ioerror [0.047088s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_ioerror [0.027049s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_timing [0.100202s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_oserror [0.033095s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_custom_timeout [0.026173s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_http_scheme [0.043426s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_without_timing [0.100067s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_multiple_segment_mappings [0.208791s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false [0.032959s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false_basic_auth_failed [0.031108s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_without_username [0.059141s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false_basic_auth_sucess [0.027381s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__prepare_ipmi_password_str_password [0.031009s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_no_address [0.110728s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_path [0.063336s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__prepare_ipmi_password_with_numeric_password [0.062011s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true [0.055413s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_physnet_inconsistent [0.090611s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true_connerror [0.028026s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_gen_auth_from_conf_user_pass_none [0.024379s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_bmc_initialization_in_progress [0.087297s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_gen_auth_from_conf_user_pass_success [0.048477s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_get_handles_exceptions [0.056321s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_update_port_exception [0.147684s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_insufficient_resources_for_session [0.098840s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_get_success [0.049506s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_node_busy [0.069877s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_with_physnet [0.080111s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_get_success_verify_false [0.069100s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach [0.051348s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_out_of_space [0.087295s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_ansi_c [0.052404s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_allowed [0.042233s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_timeout [0.073778s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_disabled [0.032951s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node [0.122694s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_no_content_length [0.038890s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_822 [0.020161s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_bmc_initialization_in_progress [0.071874s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_850 [0.021847s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_custom_timeout [0.018698s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_error_with_secret_parameter [0.018576s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_insufficient_resources_for_session [0.070299s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_http_scheme [0.019795s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node_failure [0.152418s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_forbidden [0.039317s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_node_busy [0.052767s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_redirected [0.023378s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_deleting_node [0.051336s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_out_of_space [0.032964s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_valid_path_invalid_basic_auth [0.024312s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_timeout [0.038260s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_valid_path_valid_basic_auth [0.042275s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_not_attached [0.076392s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_connect_error [0.041571s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_bmc_initialization_in_progress [0.055356s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_error [0.030356s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_insufficient_resources_for_session [0.036438s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_portgroup [0.056669s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false [0.020969s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false_error [0.028804s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_node_busy [0.070364s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_os_error [0.055553s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network [0.101452s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true [0.028451s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_out_of_space [0.056960s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true_error [0.023623s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_timeout [0.038172s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_valid_path [0.032607s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format [0.022778s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network_from_node [0.122555s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format_empty_password [0.032754s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format_empty_user [0.021202s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test___set_and_wait_no_needless_status_polling [0.108866s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format_none_password [0.036349s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__check_cipher_suite_errors [0.030661s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network_with_sg [0.098705s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format_none_user [0.041691s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_empty_list [0.040889s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__create_root_fs [0.051013s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_one_element [0.078225s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_returns_last_to_first [0.034724s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_grub_cfg [0.081082s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network [0.150916s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_isolinux_cfg [0.044172s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_IPMI_version_1_5 [0.079979s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files [0.045927s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite [0.034844s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_no_esp_imageimg [0.047423s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_error_noconfig [0.031460s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_config [0.039151s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network_from_node [0.165990s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_with_ExecutionError [0.048559s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_noconfig [0.036994s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fails_no_grub_cfg [0.035880s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_exception [0.033354s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios [0.028836s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network_with_sg [0.083794s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios_with_no_boot_mode [0.038346s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_first_call_to_address [0.052348s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_no_sleep [0.044629s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_sleep [0.027796s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network [0.112055s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_try_different_cipher_suite [0.052865s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_two_calls_to_diff_address [0.042850s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_check_exit_code [0.034395s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_dual_bridging [0.039142s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_username [0.065529s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network_from_node [0.236719s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso [0.347532s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries [0.035899s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso_for_hrefs [0.042245s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries_multiple [0.043884s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network_with_sg [0.081367s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image [0.041222s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_port [0.049095s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network [0.075865s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_single_bridging [0.034436s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image_for_hrefs [0.055875s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_deploy_iso [0.050420s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timeout [0.084778s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_esp_image [0.061271s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timing [0.076083s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network_from_node [0.176875s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_mkisofs_fails [0.099729s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_timing [0.073084s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_uefi_rootfs_fails [0.073152s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_username [0.058313s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_mkisofs_fails [0.070510s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network_with_sg [0.188743s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__ipmitool_timing_args [0.056938s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_rootfs_fails [0.036913s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info [0.050076s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios [0.028672s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks [0.106496s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_conf_ldlinux [0.054210s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_have_credentials [0.071890s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_default_ldlinux [0.047627s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_multiple_ports_one_vif_id [0.095639s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_inject_files [0.044987s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_port [0.084907s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_no_ports_for_node [0.062704s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image [0.070614s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_prot_version [0.068636s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_dd_fails [0.035354s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite [0.027969s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_no_vif_id [0.069044s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_mkfs_fails [0.044395s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_ipmi_1_5 [0.044830s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_default_all [0.028891s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_update_fail [0.064588s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_no_such_prop [0.026337s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_not_a_number [0.067655s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_with_prop_subset [0.030076s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_get_temp_url_for_glance_image [0.033050s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key [0.050785s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_client_id [0.105885s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_custom [0.031353s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key_odd_chars [0.041076s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_port_valid [0.053103s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_default [0.082663s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_prot_version_1_5 [0.042125s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_portgroups [0.135046s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_raw_smaller [0.064902s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_download_size [0.062972s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_portgroups_no_address [0.137069s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service [0.068757s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw [0.024745s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_get_node_network_data [0.066600s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw_combined_algo [0.036498s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw_no_checksum_algo [0.044970s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw_with_checksum [0.038989s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_with_checksum_mismatch [0.048003s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_image_service [0.053995s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_numeric_password [0.491542s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_no_image_service [0.085475s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_allocated [0.036124s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw [0.043622s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_specified [0.039089s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_need_power_on_false [0.389462s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_undefined_credentials [0.049527s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_already_iso [0.074565s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_missing_parameters [0.039821s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_already_raw_format [0.038463s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_need_power_on_true [0.069502s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_fails_safety_check [0.021819s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_not_supported [0.063460s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_not_permitted_format [0.043974s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_cleaning_network [0.073907s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_not_raw_after_conversion [0.057497s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_pass [0.088674s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_safety_check_disabled [0.042296s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_invalid_bridging_type [0.056532s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_safety_check_disabled_fails_to_convert [0.055462s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_no_bridging [0.040886s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_length [0.024489s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_cleaning_network_from_node [0.180461s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_type [0.025205s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_missing_parameters [0.061531s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_other_error [0.025661s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_not_supported [0.028424s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_redirect [0.026984s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_pass [0.047374s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_returns_none [0.043080s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_provisioning_network [0.143130s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_simple [0.052486s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_on_max_retries [0.076204s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_explicit [0.032317s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_error [0.059056s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_no_img_src [0.044107s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_provisioning_network_from_node [0.097836s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image [0.035963s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image_with_type [0.037275s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_exception [0.083673s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_non_glance [0.029879s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_off [0.049355s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_rescuing_network [0.135128s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_image [0.044557s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_on [0.057192s] ... ok {0} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_non_glance [0.042064s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks [0.091757s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_caller_exception [0.103457s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_str_password [0.038240s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_tempfile_known_exception [0.031155s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_portgroup_1 [0.139250s] ... ok {0} ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive [0.195517s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_tempfile_unknown_exception [0.034537s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_with_numeric_password [0.050967s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_portgroup_2 [0.157042s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_write_exception [0.103863s] ... ok {0} ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive_in_swift [0.219736s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_smartnic [0.118110s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off [0.172165s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate [0.108544s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_connection_error [0.194777s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off_max_retries [0.128482s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_bmc_initialization_in_progress [0.059716s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_insufficient_resources_for_session [0.069960s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_node_busy [0.040689s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_inspection [0.275736s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_out_of_space [0.054886s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_timeout [0.036683s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_bmc_initialization_in_progress [0.047774s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_inspection_exc [0.199304s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_insufficient_resources_for_session [0.088232s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_empty [0.473078s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_rescue [0.087580s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_node_busy [0.090747s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http [0.083426s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_rescue_exc [0.078050s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_out_of_space [0.066901s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_error [0.064229s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_timeout [0.043207s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_noauth [0.050507s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_attach [0.076736s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_bmc_initialization_in_progress [0.055745s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_detach [0.058896s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_insufficient_resources_for_session [0.043967s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_invalid_json [0.108977s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_node_busy [0.034612s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_list [0.076993s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_out_of_space [0.048198s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_port_changed [0.052169s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_timeout [0.041129s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_mold_connection_error_exceeded [0.130827s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__exec_stop_console [0.044552s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__has_vmedia_device [0.087593s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift [0.068587s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__get_ipmi_cmd [0.075151s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__has_vmedia_device_inserted [0.073434s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift_noauth [0.044706s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__get_ipmi_cmd_without_user [0.054089s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error [0.074901s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_already_inserted [0.097512s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console [0.082108s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error_exceeded [0.057637s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_empty_password [0.055601s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_anew [0.063043s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http [0.086038s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_anew_dvd [0.081034s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_fail [0.103134s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_error [0.056541s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_noauth [0.066482s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_anew_dvd_retry [0.132095s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_fail_nodir [0.116614s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift [0.058129s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate [0.056639s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_bad_device [0.071915s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift_noauth [0.058530s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_invalid_port [0.107741s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_while_ejecting [0.107691s] ... ok {0} ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id [0.090061s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_missing_port [0.068259s] ... ok {0} ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id_empty [0.070095s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_missing_port_auto_allocate [0.068275s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_everything [0.163788s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_wrong_ipmi_protocol_version [0.037827s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_get_console [0.048078s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_from_all_resources [0.111740s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console [0.071792s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console_alloc_port [0.080816s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_not_inserted [0.108203s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console_with_port [0.063574s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_specific [0.067488s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_stop_console [0.074935s] ... ok {0} ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_auth_from_config [0.462697s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_unknown [0.087545s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_stop_console_fail [0.046253s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_maintenance [0.077362s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_with_dvd_cisco_ucs [0.107267s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_not_retry_with_token [0.036866s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_recent_power_change [0.040456s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_clean_up [0.076672s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_retry [0.085815s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy [0.097505s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_wrong_state [0.078883s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_timeouts [0.057744s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_fast_track [0.096719s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_storage_should_write_image_false [0.097936s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_with_deployment_reboot [0.132340s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_maintenance [0.350673s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_get_properties [0.133089s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_not_retry_with_token [0.063267s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_recent_power_change [0.098288s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_retry [0.043611s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_wrong_state [0.078536s] ... ok {0} ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_noauth [1.069240s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_timeouts [0.074441s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare [0.445003s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy [0.151351s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare_fast_track [0.105232s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_configdrive [0.123875s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_validate [0.075053s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook [0.044311s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook_no_hook_registered [0.052810s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot [0.060843s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_smartnic_port [0.237635s] ... ok {0} ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_context [0.544987s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_deploy [0.076940s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_execute_clean_step [0.056796s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail [0.075628s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_clean_steps [0.053539s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_deploy_steps [0.047526s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail_deploy [0.115341s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare [0.116662s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail_servicing [0.121375s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_active [0.112298s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_pregenerated_token [0.067022s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_cleaning [0.047122s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance [0.046306s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance_no_power_on [0.047576s] ... ok {0} ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_token [0.529392s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_instance_ramdisk [0.106334s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot [0.051940s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_unrescuing [0.080087s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_tear_down_cleaning [0.055467s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_boot_loader_install_fail [0.129929s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate [0.071208s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_always [0.063117s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_default [0.046221s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_calls_boot_validate [0.064557s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_never [0.053658s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_interface_mismatch [0.106459s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_lenovo [0.071836s] ... ok {3} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_with_boot_iso [0.071581s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid [0.119311s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_error [0.120581s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid_whole_disk [0.093786s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_non_software_raid [0.063789s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_off [0.110911s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_on [0.049609s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid [0.084297s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_bios [0.069810s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_snmp_failure [0.100140s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_bios [0.058243s] ... ok {0} ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_without_token [0.955283s] ... ok {0} ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port [0.022985s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_properties [0.140462s] ... ok {0} ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_client_passed [0.021535s] ... ok {0} ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_failure [0.030315s] ... ok {0} ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_found [0.026096s] ... ok {0} ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_reset_mac [0.030419s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_uefi [0.220765s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__cache_tftp_images_master_path [0.041266s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot [0.163824s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info [0.027971s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_deploy_ramdisk [0.029644s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_ipxe [0.025677s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid [0.087144s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_missing_deploy_kernel [0.042757s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_error [0.137341s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid_bios [0.081063s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel [0.069032s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_snmp_failure [0.088269s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe [0.053143s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_set_boot_device_fail [0.118873s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe_anaconda [0.057082s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_timeout [0.084725s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_uefi [0.049617s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_boot_iso [0.060962s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image [0.052767s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_error [0.068801s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_kickstart_stage2_missing [0.059631s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image_bios [0.054022s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off [0.060147s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_localboot [0.041966s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_with_prep [0.057710s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_error [0.053333s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_whole_disk_image [0.042326s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_post_clean_step_hook [0.048455s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_boot_option [0.068493s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_snmp_failure [0.074415s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_url_http [0.072832s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on [0.079267s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot [0.140318s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_deploy [0.068836s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_error [0.063978s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_deploy [0.028939s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_deploy_by_arch [0.039113s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot_configure_fails [0.111804s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_snmp_failure [0.074629s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_rescue [0.069322s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot_localboot_prep_partition [0.060612s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_timeout [0.085144s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_rescue_by_arch [0.028726s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_switch_to_tenant_network [0.056140s] ... ok {3} ironic.tests.unit.drivers.test_base.CleanStepTestCase.test_get_and_execute_clean_steps [0.037963s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_kernel [0.042120s] ... ok {3} ironic.tests.unit.drivers.test_base.TestBIOSInterface.test_apply_configuration_wrapper [0.047720s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_ramdisk [0.048653s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_kernel [0.040780s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_switch_to_tenant_network_fails [0.104915s] ... ok {3} ironic.tests.unit.drivers.test_base.TestBIOSInterface.test_factory_reset_wrapper [0.071119s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_ramdisk [0.037886s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_deploy [0.048547s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_boot_interface [0.094271s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent [0.114668s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_deploy_by_arch [0.044852s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_rescue [0.027292s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_console_interface [0.081220s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_ramdisk [0.059381s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_get_power_state_fails [0.106273s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_rescue [0.030560s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_deploy_interface [0.064266s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_with_master_path [0.024948s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_without_master_path [0.022758s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_no_power_on_support [0.081819s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe [0.077126s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_driver_interfaces [0.124458s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_get_properties [0.071343s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_ipxe_timeout [0.096300s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_inspect_interface [0.060365s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot [0.059666s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_boot_device [0.050836s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot_from_lists [0.068955s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_action_oob_power_off [0.307263s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_action_oob_power_off_failed [0.074997s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_indicator_state [0.125862s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_boot_iso [0.107669s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_off_fails [0.090998s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_properties [0.092988s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_ipa_debug [0.095009s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_doesnt_complete [0.077945s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_local_boot [0.081465s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_boot_devices [0.097003s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_fails [0.060845s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_indicators [0.071629s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue [0.105326s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_race [0.080034s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_fail [0.105247s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_swift [0.093465s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue [0.118497s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_good [0.073406s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_timeout [0.066530s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_mode_good [0.089569s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_partition [0.102079s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_bad_command_result [0.135273s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_wdi [0.070467s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_indicator_state_good [0.108962s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_clean_up_ipxe_config_uefi [0.070716s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_validate [0.094847s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_exc [0.178352s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_bios [0.059997s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_parse_sleep_range [0.047579s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_uefi [0.044679s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_power_interface [0.068486s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_missing_command_result [0.117936s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6 [0.064583s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6_uefi [0.053273s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_with_smartnic_port [0.063228s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options [0.056299s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps [0.091436s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps_deploy [0.096447s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step [0.126172s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_hexadecimal_lunid [0.289170s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_additional_volume_type [0.049261s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_running [0.086929s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_sleep_one [0.486001s] ... ok {0} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_volume_type [0.060641s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_additional_property [0.034422s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_sleep_range [0.088665s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_custom_schema [0.025821s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_version_mismatch [0.128705s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_disk_type [0.021051s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_int_type [0.024257s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_is_root_volume [0.023261s] ... ok {3} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_sleep_zero [0.116798s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_deploy_step [0.098324s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_multiple_is_root_volume [0.050901s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_number_of_phy_disks [0.023425s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_create [0.055057s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_physical_disks [0.023025s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_raid_level [0.021367s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_destroy [0.055864s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_share_physical_disks [0.044060s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_service_step [0.147330s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_size_gb [0.030824s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_id [0.065218s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_max_size_gb [0.054545s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_name [0.040017s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_logical_disk [0.033869s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_uuid [0.045935s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_raid_level [0.033088s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list [0.027172s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_size_gb [0.024723s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step [0.166645s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list_by_names [0.030317s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay [0.021743s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay_software [0.020946s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_too_few_physical_disks [0.039507s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_refresh [0.056435s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step_not_found [0.070478s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_with_jbod_volume [0.054141s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_save [0.047770s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps [0.053686s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_logical_disks [0.054153s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps_only_oob [0.047647s] ... ok {3} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create [0.079581s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_custom_interface [0.059777s] ... ok {0} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_size_gb [0.064248s] ... ok {0} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_context [0.044809s] ... ok {3} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create_with_node [0.076458s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_missing_steps [0.091985s] ... ok {0} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity [0.047751s] ... ok {0} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity_empty_base [0.041092s] ... ok {3} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy [0.091050s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities [0.070422s] ... ok {0} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_context [0.041894s] ... ok {3} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy_with_node [0.068612s] ... ok {0} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity [0.045640s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities_none [0.080953s] ... ok {3} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_node_uuid [0.031457s] ... ok {0} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity_empty_base [0.026552s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier [0.022566s] ... ok {3} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_uuid [0.035168s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_notifier [0.021676s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps [0.059409s] ... ok {3} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_not_found [0.025635s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_publisher_id [0.020882s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier [0.029617s] ... ok {3} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_refresh [0.042908s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_notifier [0.018848s] ... ok {3} ironic.tests.unit.objects.test_objects.TestMisc.test_max_version [0.028434s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_publisher_id [0.020685s] ... ok {3} ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_one [0.023205s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_busy [0.100653s] ... ok {3} ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_two [0.018360s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_disabled [0.040141s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_create [0.026088s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_bad_id_and_uuid_and_address_and_name [0.034035s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_deploy [0.077090s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_enabled [0.057935s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_address [0.057339s] ... ok {0} ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_with_custom_topics [0.057947s] ... ok {0} ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link [0.026047s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_interface [0.096226s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_id [0.052854s] ... ok {0} ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link_EEXIST [0.039578s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_steps [0.057022s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_name [0.046504s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object [0.065431s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_uuid [0.039143s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_agent_token_required [0.052985s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list [0.030471s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object_throws_for_invalid_or_unsupported_hash_name [0.027972s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_all_attempts [0.044250s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list_by_node_id [0.032278s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_differ [0.033942s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_payload_schemas [0.021587s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal [0.024587s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_one_timeout [0.046896s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_refresh [0.028295s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal_not_binary [0.031521s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save [0.041267s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_fips_enabled [0.034014s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_two_timeouts [0.061122s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_hostname_safe [0.033500s] ... ok {3} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save_after_refresh [0.049084s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_datapath_id [0.029854s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_basics [0.058696s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_create [0.031033s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_logical_name [0.031319s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_destroy [0.030547s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_get_power_state [0.065626s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get [0.029882s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_no_proxy [0.045464s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip [0.024277s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_get_power_state_unknown [0.037942s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip_not_raises_exceptions [0.025299s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_id [0.050056s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_unix_file_modification_datetime [0.028025s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_uuid [0.036597s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_datapath_id [0.025632s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list [0.031747s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac [0.020675s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac_invalid_format [0.020685s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_by_node_id [0.027363s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot [0.130138s] ... ok {0} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_wrap_ipv6 [0.025971s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_none [0.033720s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_payload_schemas [0.039377s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_another_state [0.081217s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_refresh [0.028488s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state [0.107727s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save [0.037731s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_into_instance [0.054651s] ... ok {3} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save_after_refresh [0.044707s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_create [0.023794s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_timeout [0.069971s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_destroy [0.026636s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate [0.030137s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state_maintenance [0.126929s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get [0.027243s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate_fails [0.028752s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_id [0.037781s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate_no_fast_track [0.044003s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_uuid [0.023997s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list [0.022630s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_agent_add_clean_params [0.059828s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_node_id [0.040490s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_volume_id [0.022545s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_conf [0.034472s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_none [0.030710s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_keystone [0.039844s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_payload_schemas [0.021319s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_force_raw [0.033225s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_refresh [0.028009s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save [0.030502s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_stream [0.035231s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save_after_refresh [0.043408s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles [0.335096s] ... ok {3} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_change_state [0.031878s] ... ok {3} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_deny_macs [0.036799s] ... ok {3} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_no_macs [0.036374s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_failed [0.114981s] ... ok {3} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_only_new_macs [0.052230s] ... ok {3} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_removed_nodes [0.064490s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_no_console_enabled [0.091152s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_partition [0.312160s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_true [0.034645s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_locked [0.110286s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_not_found [0.112447s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning [0.180020s] ... ok {0} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_tear_down_fail [0.125322s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_broken_fast_track [0.096675s] ... ok {0} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_cleanhold_abort_tear_down_fail [0.073215s] ... ok {0} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test_do_node_clean_abort_early [0.054157s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_fast_track [0.131130s] ... ok {0} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test_do_node_clean_abort_with_step [0.086340s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_manage_boot_false [0.085644s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_service [0.080436s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning [0.061512s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_cleaning_error [0.067424s] ... ok {0} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestChildNodes.test_do_next_clean_step_with_children [0.309372s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_fast_track [0.116835s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_manage_boot_false [0.133448s] ... ok {0} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestChildNodes.test_do_next_clean_step_with_children_by_uuid [0.264261s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_service [0.217099s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_exception_in_background_task [0.127227s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_service_service_error [0.053440s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_cleaning [0.055761s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_node_already_locked [0.118267s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_deploying [0.035783s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_all [0.036385s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_one [0.038920s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_clears_non_pregenerated_token [0.048654s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_power_on [0.162269s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_clears_polling_if_not_set [0.037000s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_all [0.042589s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_one [0.036857s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_with_master_path [0.024665s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_without_master_path [0.023264s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_soft_power_off_timeout [0.176241s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_all_supported_capabilities [0.022509s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label [0.021205s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set [0.029383s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set_bios_mode [0.022478s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_unsupported_state [0.098977s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_uefi_mode [0.021800s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_false [0.021307s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_invalid [0.024418s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_true [0.022292s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_validate_fail [0.095447s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities [0.021690s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities_string [0.019611s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_invalid_type [0.019759s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability [0.020332s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_worker_pool_full [0.098039s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info [0.033662s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info_with_exc [0.020535s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_with_exc [0.019953s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_anaconda [0.057161s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_get_power_fail [0.138710s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_anaconda_img_checked [0.081360s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_image [0.063574s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_no_state_change [0.166675s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_image_checked [0.065555s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image [0.078040s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image_checked [0.056944s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_set_power_fail [0.189241s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_image_not_found [0.051646s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image [0.048067s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image_fmt_checked [0.057970s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image_fmt_not_checked [0.076889s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_part_img_checked [0.090774s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_partition_image [0.045196s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_spawn_fail [0.346367s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_is_a_path [0.076244s] ... ok {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_success [0.118296s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port [0.065783s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_no_vif [0.052158s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_vif_present [0.056252s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_redirect [0.267333s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_port_unbound [0.045718s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_state [0.039846s] ... ok {1} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_redirect_not_path [0.047772s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_both_clean_up [0.030728s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_locked [0.040821s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_another_fs [0.037932s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_bound [0.052225s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_fail [0.031009s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_unbound [0.051201s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_no_clean_up [0.036822s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup [0.057435s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_one_clean_up [0.068732s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup_node_locked [0.034511s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param [0.038800s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_correct_power_state_on_upgrade_lock [0.028704s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_error [0.026921s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_fail [0.043850s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param_not_found [0.090286s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_maintenance_on_upgrade_lock [0.030730s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bios [0.054576s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded [0.035741s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded2 [0.061576s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso [0.067181s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded_notify [0.059951s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_with_instance_info [0.062146s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_no_power_sync_support [0.039811s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_default_boot_mode [0.060784s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_power_state_sync_max_retries_gps_exception [0.053359s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_extra_params [0.060075s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_retry_then_success [0.045141s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params [0.043184s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync [0.071584s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_defaults [0.041233s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info [0.043507s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync_notify [0.059010s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync [0.032962s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info_bios [0.052608s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync_failed [0.040614s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_bios [0.045963s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_not_set [0.049872s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_cleaning [0.066556s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged [0.058542s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged_for_fake_node [0.040406s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_uefi [0.073585s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_validate_fail [0.029401s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_uefi [0.056631s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_vendor_detection [0.081295s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_with_node_external_http_url [0.048437s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_wrong_provision_state_on_upgrade_lock [0.059932s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_floppy_image [0.050373s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_iso_image [0.036129s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test__sync_power_state_multiple_nodes [0.042263s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_disappears_on_acquire [0.028761s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso [0.045747s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_deploywait_on_acquire [0.027276s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_enroll_on_acquire [0.030736s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso_user_supplied [0.049663s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_maintenance_on_acquire [0.029338s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image [0.045245s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_power_transition_on_acquire [0.042322s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_binary_url [0.047086s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_locked_on_acquire [0.033719s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_not_mapped [0.033194s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_url [0.053068s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node [0.038274s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso [0.049621s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node_adopt_failed [0.026049s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso [0.041298s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data [0.063398s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso_vendor_prefix [0.043640s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_external_ip [0.037233s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_disabled [0.073281s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_network_data [0.048997s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_multiple_workers [0.069255s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_tls [0.062765s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image [0.046874s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_file [0.039209s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_prefix [0.042766s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image [0.038349s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_config_external_http_url [0.044800s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_one_worker [0.252444s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_node_external_http_url [0.037331s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_with_external_ip [0.040884s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_all [0.072195s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image [0.041718s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_non [0.063252s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_custom_cache [0.038182s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_part [0.086646s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_file [0.081228s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_from_swift [0.056321s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__sensors_conductor [0.086098s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_local [0.045228s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task [0.072389s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_local_external_http_url [0.048269s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_swift_noop [0.034916s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_maintenance [0.068789s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_swift_schema [0.043529s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.SwiftCleanUp.test_clean_up_swift_entries [0.067484s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_no_management [0.090045s] ... ok {0} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_shutdown [0.080650s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach [0.045434s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_node_locked [0.031802s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_network_error [0.046401s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_portgroup_physnet_inconsistent [0.041026s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_vif_invalid_for_attach [0.051744s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.SwiftCleanUp.test_clean_up_swift_entries_with_404_exception [0.333874s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_validate_error [0.040591s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach [0.058152s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.SwiftCleanUp.test_clean_up_swift_entries_with_fail_exception [0.079276s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_node_locked [0.031814s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.SwiftCleanUp.test_clean_up_swift_entries_with_fail_exceptions [0.050637s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_raises_network_error [0.042097s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls [0.025466s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_validate_error [0.061795s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls_already_checked [0.046241s] ... ok {0} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_list [0.035710s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls_for_socat [0.037877s] ... ok {0} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_attach_virtual_media_http [0.051872s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls_for_socat_already_checked [0.047526s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_management_init_calls [0.036026s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_management_init_calls_already_checked [0.024284s] ... ok {0} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_attach_virtual_media_local [0.078089s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls [0.021803s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls_already_checked [0.025171s] ... ok {0} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_do_attach_virtual_media [0.043101s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls_raises_1 [0.024435s] ... ok {0} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_do_attach_virtual_media_fails_on_attach [0.054580s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls_raises_2 [0.043525s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls_raises_3 [0.024449s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_vendor_passthru_init_calls [0.021972s] ... ok {0} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_do_attach_virtual_media_fails_on_prepare [0.063905s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_vendor_passthru_init_calls_already_checked [0.022467s] ... ok {0} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification [0.029968s] ... ok {0} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_notify_exc [0.044249s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__allocate_port [0.071292s] ... ok {0} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_payload_exc [0.033831s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_cold [0.040738s] ... ok {0} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification [0.026451s] ... ok {0} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification_error_status [0.027668s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_fail [0.053681s] ... ok {0} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_set_notification [0.033846s] ... ok {0} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_state_corrected_notification [0.028764s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_ok [0.047599s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_debug [0.025701s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceAbortTestCase.test__do_node_cleanhold_abort_tear_down_fail [0.047346s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_failed [0.027671s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_missing_sensor_reading [0.030687s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceAbortTestCase.test__do_node_service_abort_tear_down_fail [0.074810s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_ok [0.063825s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceAbortTestCase.test_do_node_service_abort_early [0.048961s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__release_allocated_port [0.055812s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_detect_vendor [0.043623s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceAbortTestCase.test_do_node_service_abort_with_step [0.102973s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_fail [0.042270s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_ok [0.040595s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_clean_step_automated_execute_fail [0.078780s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_force_boot_device_persistent [0.044984s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state [0.041639s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state_exception [0.048738s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_properties [0.040091s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_force_set_boot_device_ok_bios [0.071392s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device [0.050047s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_fail [0.040494s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_automated_fail_in_tear_down_service [0.336493s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_persistent [0.041768s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_unknown_dev [0.041217s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_automated_last_step_noop [0.074310s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_supported_boot_devices [0.051709s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_fail [0.044435s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_automated_no_steps [0.124218s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_ok [0.049935s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_bad_step_return_value [0.068615s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_no_force_set_boot_device_bios [0.080052s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_manual_last_step_noop [0.069234s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_bad_device [0.045353s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_exec_failed [0.044592s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service [0.056217s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_ok_bios [0.052000s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_automated_network_validate_fail [0.067310s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_persistent_bios [0.073848s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_automated_power_validate_fail [0.064594s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi [0.054934s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_disable_ramdisk [0.078908s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_onetime_smci [0.065322s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_manual_network_validate_fail [0.066761s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent [0.056206s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_manual_power_validate_fail [0.056244s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent_smci [0.085205s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_network_error_fail [0.060051s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_unknown_exception [0.054336s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_prepare_service_active [0.075078s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_prepare_service_fail [0.068109s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_bios [0.096317s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_uefi [0.083155s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_prepare_service_wait [0.094361s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_bios [0.042794s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_uefi [0.078143s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_steps_fail [0.118084s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_continue_node_service [0.043236s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_fail [0.073117s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_continue_node_service_no_skip_step [0.059094s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_good [0.052306s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_power_validate [0.052155s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_all [0.085119s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_already_off [0.076121s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_all_disable_ramdisk [0.098235s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_off [0.049294s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_on [0.049414s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_collect_logs [0.088021s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_continue_from_last_cleaning [0.057751s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_manual_continue_from_last_cleaning [0.070418s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_agent_busy [0.081755s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_ok [0.246248s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_fail [0.045133s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_automated_first_step_async [0.075962s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_ok [0.051897s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_handles_hold_from_active [0.053125s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_fail [0.047946s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_handles_hold_from_wait [0.058848s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_from_clean_step [0.051249s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_manual_first_step_async [0.085226s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_is_in_step_list [0.089946s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_oob_reboot [0.081705s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_ok [0.049624s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_returns [0.047377s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_oob_reboot_fail [0.064166s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_invalid_state [0.038525s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_oob_reboot_last_step [0.055534s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_ok [0.045347s] ... ok {0} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_node_service_steps_fail_poweroff [0.060988s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_timeout_ok [0.051647s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_fail [0.041411s] ... ok {0} ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_instance_deploy_failure [0.046994s] ... ok {0} ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_invalid_parameter_value [0.039187s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_ok [0.046878s] ... ok {0} ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_ok [0.042973s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_fail [0.041773s] ... ok {0} ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_skip_missing [0.044814s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_ok [0.042478s] ... ok {0} ironic.tests.unit.conductor.test_steps.ReservedStepHandlerByNameTestCase.test_reserved_step_wait [0.045862s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot [0.060601s] ... ok {0} ironic.tests.unit.conductor.test_steps.ReservedStepHandlerByNameTestCase.test_reserved_step_wait_time [0.052156s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot_timeout [0.044899s] ... ok {0} ironic.tests.unit.conductor.test_steps.ReservedStepHandlerByNameTestCase.test_reserved_step_wait_time_to_long [0.058455s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_ok [0.053973s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_timeout_ok [0.060506s] ... ok {0} ironic.tests.unit.conductor.test_steps.ReservedStepsHandlerTestCase.test_reserved_step_power_off [0.082059s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_ok [0.060855s] ... ok {0} ironic.tests.unit.conductor.test_steps.ReservedStepsHandlerTestCase.test_reserved_step_power_on [0.079628s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_fail [0.061216s] ... ok {0} ironic.tests.unit.conductor.test_steps.ReservedStepsHandlerTestCase.test_reserved_step_power_reboot [0.053080s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_ok [0.058069s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_cold [0.111934s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_warm [0.084685s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_send_raw_bytes [0.055380s] ... ok {0} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps [0.297039s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_send_raw_bytes_with_http_method [0.043329s] ... ok {0} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_no_steps [0.042355s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_driver_routes [0.035311s] ... ok {0} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_on_node [0.050957s] ... ok {0} ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_add_secret_token [0.020667s] ... ok {0} ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_is_agent_token_present [0.018591s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_cold_good [0.061430s] ... ok {0} ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_wipe_deploy_internal_info [0.028089s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_good [0.045671s] ... ok {0} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_empty [0.043573s] ... ok {0} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_populated [0.031659s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_warm_good [0.054674s] ... ok {0} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_dict [0.030960s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__parse_driver_info_fail [0.039530s] ... ok {0} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_string [0.027046s] ... ok {0} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_no_configdrive [0.026957s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_fail [0.046361s] ... ok {0} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_string [0.030909s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_good [0.039132s] ... ok {0} ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_no_token_info [0.022872s] ... ok {0} ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_returns_project_id_if_present [0.023393s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_vendor_routes [0.036317s] ... ok {0} ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_unsupported [0.059527s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__exec_stop_console [0.048708s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd [0.037179s] ... ok {0} ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_valid [0.050255s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd_without_user [0.041865s] ... ok {0} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot [0.053258s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console [0.046138s] ... ok {0} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot_timeout [0.054330s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_empty_password [0.050075s] ... ok {0} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off [0.048635s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail [0.056057s] ... ok {0} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_storage_detach [0.061355s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail_nodir [0.045712s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate [0.031659s] ... ok {0} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_timeout [0.051804s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_invalid_port [0.036802s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_1 [0.050698s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port [0.039180s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_2 [0.058542s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port_auto_allocate [0.032667s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_wrong_ipmi_protocol_version [0.034520s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_1 [0.056577s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_get_console [0.047785s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_2 [0.071586s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console [0.054309s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_1 [0.052043s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_alloc_port [0.052199s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_2 [0.051230s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_with_port [0.045160s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_1 [0.046803s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_2 [0.060967s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_3 [0.061994s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console [0.217358s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_1 [0.071448s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console_fail [0.039684s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_2 [0.045566s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_instance [0.044013s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_3 [0.047251s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk [0.053836s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_1 [0.048980s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk_rescue [0.047157s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_2 [0.054127s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_ensure_boot_interface_is_not_http_enabled [0.037745s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_3 [0.066234s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_get_properties [0.055151s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_1 [0.048394s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance [0.051471s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_active [0.068388s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_2 [0.100883s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi [0.063774s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_1 [0.058046s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi_bios [0.071248s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_2 [0.097469s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_ramdisk [0.092851s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_3 [0.066268s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_1 [0.047169s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk [0.064508s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_2 [0.061697s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_bios [0.090756s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_1 [0.053816s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_2 [0.052830s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_with_kernel_arg [0.107991s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets [0.069106s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_with_fallback [0.068856s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets_fix [0.052668s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_create [0.040916s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk [0.093552s] ... ok {0} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_update [0.062929s] ... ok {0} ironic.tests.unit.conf.test_types.ExplicitAbsolutePath.test_explicit_absolute_path [0.023207s] ... ok {0} ironic.tests.unit.db.sqlalchemy.test_api.TestDBWriteMethodsRetryOnDeadlock.test_retry_on_deadlock [0.047643s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_cleaning [0.147307s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes [0.098102s] ... ok {0} ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncMysql.test_models_sync ... SKIPPED: Backend 'mysql+pymysql' is unavailable: Could not connect {0} ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncPostgres.test_models_sync ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {0} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_create_schema_and_version ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {0} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_create_schema ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {0} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_version ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {0} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_twice ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {0} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_walk_versions ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {0} ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_default_value [0.025076s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported [0.095989s] ... ok {0} ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_type_check [0.022626s] ... ok {0} ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_default_value [0.031977s] ... ok {0} ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_type_check [0.032388s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift [0.101111s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create [0.033507s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_name [0.027206s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_uuid [0.025229s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift_whole_disk_image [0.087544s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation [0.029851s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_file_different [0.082464s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_no_file [0.078138s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_that_does_not_exist [0.187281s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_uuid [0.025771s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_without_copy [0.078897s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_with_node [0.045906s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id [0.024941s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id_that_does_not_exist [0.024174s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_rescue [0.078901s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name [0.027031s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name_that_does_not_exist [0.027141s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid [0.027555s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called [0.079517s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid_that_does_not_exist [0.023999s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list [0.029419s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm [0.073585s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_conductor_affinity [0.034081s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_node [0.041674s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_rsc [0.032610s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic [0.099368s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_state [0.037868s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_invalid_fields [0.050264s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_sorted [0.048216s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_allocation_not_found [0.025536s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_conflict [0.059353s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_success [0.054161s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation [0.047001s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios [0.335976s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_associated_with_another_node [0.076552s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_duplicated_name [0.031285s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi [0.086824s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_node_already_associated [0.063600s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_uefi [0.073894s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_not_found [0.027794s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_uuid [0.025580s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_kernel [0.042830s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_ramdisk [0.044178s] ... ok {0} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_with_node_id [0.065966s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_no_port [0.040971s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good [0.049231s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good_whole_disk_image [0.063460s] ... ok {0} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_empty_db [0.135669s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection [0.059560s] ... ok {0} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_max_count_zero [0.072469s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection_no_inspection_ramdisk [0.053795s] ... ok {0} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_1 [0.063653s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_no_image_source_for_local_boot [0.049706s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_skip_check_write_image_false [0.063390s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso [0.074739s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso_and_image_source [0.102602s] ... ok {0} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_2_some_nodes [0.301457s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEHttpBootTestCase.test_http_boot_enabled [0.090857s] ... ok {0} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_same_nodes [0.112378s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEHttpBootTestCase.test_prepare_ramdisk [0.109009s] ... ok {0} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_one_node [0.060479s] ... ok {0} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_version_exists [0.053309s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_reservations_for_conductor [0.051539s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEHttpBootTestCase.test_prepare_ramdisk_rescue [0.153488s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_target_power_state [0.048201s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_many_ht [0.032442s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_one_ht [0.032211s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_many_ht [0.027850s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEHttpBootTestCase.test_prepare_ramdisk_uefi [0.099259s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_no_ht [0.027049s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue [0.048862s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht [0.028746s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht_groups [0.028975s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel [0.055908s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_with_old_conductor [0.031970s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor [0.025906s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor_not_found [0.024460s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk [0.066167s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_ignore_online [0.031124s] ... ok {1} ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_dummy_methods [0.031949s] ... ok {1} ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_set_boot_device [0.026003s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_with_online_true [0.028378s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_off [0.025022s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_offline_conductors [0.032842s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_on [0.024901s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_offline_conductors_with_sqlite [0.028818s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_reset [0.024703s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_online_conductors [0.029353s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_state_off [0.027415s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_online_conductors_with_sqlite [0.028839s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_state_on [0.045145s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_list_hardware_type_interfaces [0.033747s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_snmp_objects [0.026546s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_existing_fails [0.029618s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_off [0.024777s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces [0.037328s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_on [0.027601s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_reset [0.024032s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces_duplicate [0.029411s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_state_off [0.022304s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_override [0.025595s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_state_on [0.029485s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor [0.042610s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_snmp_objects [0.049464s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_off [0.037656s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_not_found [0.057817s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_offline [0.038276s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_on [0.043973s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_offline_conductor [0.030710s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor [0.041733s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_reset [0.067221s] ... ok {0} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor_hardware_interfaces [0.032903s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_state_off [0.053671s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_destroy_node_history_by_uuid [0.041890s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_state_on [0.069888s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_off [0.045562s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_on [0.033995s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_reset [0.033759s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_state_off [0.030146s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_state_on [0.023648s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_snmp_objects [0.022599s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_snmp_objects [0.025295s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id [0.274164s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_off [0.026516s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id_not_found [0.026258s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_on [0.024844s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id [0.025301s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_reset [0.023561s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id_empty [0.025911s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_state_off [0.047514s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid [0.050485s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_state_on [0.026712s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid_not_found [0.025787s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_snmp_objects [0.027173s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list [0.035903s] ... ok {0} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list_sorted [0.035561s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag [0.035332s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_duplicate [0.032276s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_node_not_exist [0.024690s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag [0.036799s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_node_not_found [0.024539s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_not_found [0.028787s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_off [0.279692s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_by_node_id [0.038210s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_empty [0.033197s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_on [0.047750s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_on_cached_driver [0.024731s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_node_not_exist [0.043424s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_reset [0.033593s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_exists [0.031408s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_off [0.030410s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_node_not_exist [0.025774s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_on [0.028239s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_node_tag_not_exists [0.027760s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags [0.029943s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_pdu_discovery_failure [0.033798s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_duplicate [0.027591s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_unknown_pdu [0.052673s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_node_not_exist [0.043615s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_empty_node_tags [0.037475s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_off [0.039428s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags [0.035015s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_on [0.049588s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags_node_not_exist [0.031776s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_reset [0.039198s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_type_connector_id [0.039590s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_snmp_objects [0.025518s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_uuid [0.027216s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_state_off [0.041293s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_destroy_volume_connector [0.031426s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_state_on [0.022356s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_id [0.032251s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_off [0.026925s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_on [0.023881s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_uuid [0.038785s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_reset [0.023528s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list [0.033569s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_state_off [0.025339s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list_sorted [0.042564s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_state_on [0.040408s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id [0.030474s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_snmp_objects [0.042337s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id_that_does_not_exist [0.035377s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector [0.034374s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_off [0.049653s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_duplicated_type_connector_id [0.035501s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_on [0.035274s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_fails_invalid_id [0.029309s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_reset [0.025107s] ... ok {0} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_uuid [0.024635s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_off [0.025682s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target [0.025941s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_on [0.028553s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_nodeid_and_bootindex [0.029364s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_pending_off [0.026420s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_pending_on [0.025031s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_uuid [0.028338s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_snmp_objects [0.026107s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_destroy_volume_target [0.028498s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off [0.034058s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_id [0.027429s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_uuid [0.028581s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_delay [0.026837s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_invalid_state [0.025501s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list [0.041163s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_snmp_get_failure [0.029839s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list_sorted [0.029065s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_snmp_set_failure [0.037864s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id [0.034270s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_timeout [0.037168s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id_that_does_not_exist [0.030175s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on [0.027597s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id [0.032529s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_delay [0.037187s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id_that_does_not_exist [0.033837s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_invalid_state [0.028531s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target [0.035694s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_snmp_get_failure [0.036178s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_duplicated_nodeid_and_bootindex [0.026466s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_snmp_set_failure [0.027541s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_fails_invalid_id [0.026045s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_timeout [0.027853s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_uuid [0.036103s] ... ok {0} ironic.tests.unit.dhcp.test_factory.CompareBasetoModules.test_drivers_match_dhcp_base [0.022785s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset [0.048679s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__calculate_memory_req [0.037582s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_delay_option [0.025615s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_clean_steps [0.034105s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_delay [0.044890s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_configdrive_path [0.033949s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_delay_on_delay [0.041489s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_invalid_state [0.024094s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_node_ip [0.048966s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_snmp_get_failure [0.023624s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_python_interpreter [0.024890s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_snmp_set_failure [0.030881s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info [0.030289s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_timeout [0.028843s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_defaults [0.027476s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_no_playbook [0.025729s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_delay [0.034107s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_all_gpt [0.032533s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_invalid_state [0.030593s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_root_msdos [0.026256s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_snmp_get_failure [0.028887s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_snmp_set_failure [0.030167s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints [0.060912s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_timeout [0.030249s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_error [0.023287s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_fail_advanced [0.045042s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_off [0.025932s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_on [0.029348s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_iinfo [0.044025s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_snmp_failure [0.032869s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_raritan_pdu2_snmp_objects [0.026625s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_override [0.058624s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_servertech_sentry3_snmp_objects [0.022355s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_extra_vars [0.024528s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_servertech_sentry4_snmp_objects [0.022205s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_snmp_auto_cache_supports_pdu_replacement [0.027312s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables [0.045223s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_off [0.035201s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_file [0.055583s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_on [0.025655s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_reset [0.027580s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_state_off [0.022756s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_json [0.230967s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_state_on [0.228701s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_url [0.052121s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_snmp_objects [0.022184s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_insecure_activated [0.045588s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_vertivgeist_pdu_snmp_objects [0.028753s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo [0.034211s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_root_device_hints [0.069780s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_description_invalid [0.033041s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook [0.025835s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_empty_dict [0.024098s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_missing_description [0.023630s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_override [0.026720s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_not_dict [0.021759s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_python3 [0.034108s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_required_invalid [0.035177s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_debug [0.032951s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_unknown_key [0.032254s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_nodebug [0.024226s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_fail [0.025848s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps [0.025155s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_not_dict [0.056403s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_missing [0.023195s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_all_args [0.034669s] ... ok {0} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_names_not_unique [0.024811s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_abortable [0.043767s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_cd [0.050908s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_argsinfo [0.052934s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_priority [0.041345s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_disk [0.083459s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_priority_only [0.034363s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_floppy [0.044047s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_all_args [0.026473s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_persistent [0.046927s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_argsinfo [0.024469s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_priority [0.026335s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test_validate_correct_vendor [0.039520s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_priority_only [0.036881s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_with_ethernet_interfaces [0.036790s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepTestCase.test_get_and_execute_deploy_steps [0.026459s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_without_ethernet_interfaces [0.038060s] ... ok {1} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_check_func_references [0.027513s] ... ok {1} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_exclusive_task_metadata [0.020370s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_BIOS_boot_mode [0.042478s] ... ok {1} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_ironicexception [0.033701s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_UEFI_boot_mode [0.066567s] ... ok {1} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_noexception [0.046876s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_without_boot_mode [0.045861s] ... ok {1} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_nonironicexception [0.046494s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_get_properties [0.024631s] ... ok {1} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_shared_task_metadata [0.021721s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration [0.024328s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_inspect_hardware_with_ethernet_interfaces_mac [0.048747s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_delete_existing [0.034621s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_invalid [0.021012s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test__configure_vmedia_boot_with_boot_iso [0.049794s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_get_logical_disk_properties [0.021300s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate [0.020704s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume [0.051751s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_no_target_raid_config [0.029722s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume_bios [0.066652s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_raid_config [0.071875s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_deleting [0.050533s] ... ok {1} ironic.tests.unit.drivers.test_base.TestBootInterface.test_validate_rescue_default_impl [0.037738s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_rescuing [0.060260s] ... ok {1} ironic.tests.unit.drivers.test_base.TestFirmwareInterface.test_update_with_wrapper [0.050479s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_ramdisk [0.041879s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_default_interfaces [0.062324s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume [0.073805s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_inspector [0.058359s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume_bios [0.044928s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_raid [0.061806s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_ramdisk [0.085607s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_bios [0.080116s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_partition_image [0.053553s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_inspect [0.045743s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image [0.052802s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_management_and_power [0.052954s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image [0.072087s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_raid [0.046908s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning [0.069171s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_vendor [0.064735s] ... ok {1} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_virtual_media_boot [0.045266s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_default_interfaces [0.044466s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_in_takeover [0.119627s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_agent_rescue [0.058033s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image [0.068511s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_cinder_storage [0.049104s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning [0.059685s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_noop_mgmt [0.040750s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_shellinabox [0.047846s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_iso [0.064044s] ... ok {1} ironic.tests.unit.drivers.test_snmp.SNMPHardwareTestCase.test_default_interfaces [0.060175s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_glance_image [0.072876s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image [0.077711s] ... ok {1} ironic.tests.unit.drivers.test_snmp.SNMPHardwareTestCase.test_fake_management [0.096081s] ... ok {1} ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_get_properties [0.026051s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate [0.044760s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_boot_from_volume [0.051314s] ... ok {1} ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_bad_method [0.084256s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection [0.051338s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection_missing [0.037803s] ... ok {1} ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_valid_methods [0.086566s] ... ok {1} ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce [0.059017s] ... ok {1} ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce_bad_values [0.041774s] ... ok {1} ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce_nullable_translation [0.037153s] ... ok {1} ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce [0.044175s] ... ok {1} ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce_bad_values [0.031044s] ... ok {1} ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_bad_value [0.022372s] ... ok {1} ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_good_value [0.023024s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_create [0.033333s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_glance [0.338840s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_get_firmware_component [0.031591s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_get_firmware_component_does_not_exist [0.027778s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver [0.056240s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_get_firmware_component_node_does_not_exist [0.026854s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_save [0.033249s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver_exc [0.055132s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_sync_firmware_components_create_and_update [0.034425s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue [0.066194s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_sync_firmware_components_nochange [0.061826s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_deprecated [0.061458s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test__validate_property_values_success [0.038112s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_insecure [0.025028s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk [0.039750s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_copies_file_to_target [0.036417s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_gets_invoked_for_file_based_firmware [0.022061s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_downloads_the_fw_file [0.029904s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_gets_invoked_for_http_based_firmware [0.019663s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_calls__download_http_based_fw_to [0.026992s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_creates_temp_url [0.041361s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_gets_invoked_for_swift_based_firmware [0.026881s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure [0.231388s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_calls_process_firmware_image [0.030738s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_configdrive_as_dict [0.022370s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_doesnt_upload_firmware [0.029928s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive [0.022457s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_file_if_no_upload [0.031333s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive_as_dict [0.031524s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_swift [0.041127s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_webserver [0.039029s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_with_traits [0.073938s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_swift [0.029075s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_create [0.029631s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_invalid_properties [0.021477s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_webserver [0.035764s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_traits [0.030715s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_file_based_me [0.029897s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_bad_id_and_uuid [0.026768s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_swift_based_me [0.036107s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_id [0.028436s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_webserver_based_me [0.030499s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_not_found [0.025677s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components [0.022077s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components_fails [0.023592s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_instance_uuid [0.029406s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_img_loc_sets_these_attributes [0.019022s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name [0.032836s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_sets_parsed_url_attrib_of_fw_processor [0.019341s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_throws_exception_with_invalid_firmware_url [0.024075s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name_node_not_found [0.029165s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info [0.024934s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_port_addresses [0.025843s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_empty_parameter [0.019410s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_uuid [0.024232s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_invalid_component [0.018389s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_missing_parameter [0.018860s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface [0.027981s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum [0.022843s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_interface_overriden [0.027902s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_invalid_component [0.025611s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_list [0.025083s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_with_component [0.017833s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields [0.023844s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_empty_trait_present [0.023239s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__download_fw_to [0.058375s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_traits [0.027256s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_payload_schemas [0.030806s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__extract_fw_from_file [0.070159s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_refresh [0.027825s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_release [0.024004s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_release_node_not_found [0.021463s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_throws_error_if_checksum_validation_fails [0.065096s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve [0.027916s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_reserve_node_not_found [0.032234s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_save [0.023371s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_after_refresh [0.041855s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_truncated [0.029999s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_updated_at_field [0.025618s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group [0.024394s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_fail [0.023206s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_uppercase [0.023560s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_traits [0.026077s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_touch_provisioning [0.027206s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodeObject.test_update_with_invalid_properties [0.028336s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_corrected_power_state_payload [0.046733s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_verifies_checksum_of_downloaded_fw_file [0.374223s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_invalid_update_mode [0.036768s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_crud_payload [0.046253s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_no_firmware_url [0.043046s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload [0.047262s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_power_state [0.039426s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_no_traits [0.033508s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_traits_is_none [0.024666s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_properties [0.030925s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_power_state_payload [0.038988s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_supported_power_states [0.050668s] ... ok {1} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_provision_state_payload [0.029564s] ... ok {1} ironic.tests.unit.objects.test_node_inventory.TestNodeInventoryObject.test_create [0.026469s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_no_timeout [0.052484s] ... ok {1} ironic.tests.unit.objects.test_node_inventory.TestNodeInventoryObject.test_destroy [0.026968s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification [0.027008s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_with_timeout [0.045318s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification_empty_schema [0.030074s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_no_timeout [0.052428s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_invalid_status_fails [0.053037s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_timeout [0.041938s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_make_status_invalid [0.042693s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate [0.041327s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate_fail [0.047028s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_with_status [0.076816s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_invalid_state [0.047102s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_without_status_fails [0.056496s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_maintenance [0.038553s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_manage [0.039626s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_has_secrets [0.069221s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_missing_boot_iso_href [0.036975s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_no_secrets [0.021652s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_not_affected [0.029464s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_is_it_a_supported_system [0.041954s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_level_too_low [0.030258s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_is_it_a_supported_system_exception [0.040194s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_notifs_disabled [0.025241s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_schema_not_populated [0.025485s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_boot_into_iso [0.046567s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema [0.021054s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_missing_required_obj_field [0.021773s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_boot_into_iso [0.046162s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_no_object_field [0.021245s] ... ok {1} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_nullable_field_auto_populates [0.018969s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_api [0.025456s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_create_subscription [0.059072s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_conductor [0.023681s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_api [0.027784s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_operation_exeption [0.047002s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_conductor [0.019103s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport [0.024273s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_memory.MemoryTestCase.test_memory [0.046527s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport_zero [0.021649s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_backports [0.033150s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_pci_devices.PciDevicesTestCase.test_pci_devices [0.055120s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_passes_revision [0.027145s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_pin_ignored [0.021840s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_multiple_new_root_devices [0.040492s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_same_revision_does_not_backport [0.018953s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_no_new_root_devices [0.044717s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization [0.029988s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization_iterables [0.022160s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_no_previous_inventory [0.042329s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_invalid_pin [0.020040s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_no_serials [0.047350s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_root_device_already_set [0.051133s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_root_device_found [0.045301s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_api [0.214955s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_conductor [0.025548s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_api [0.020353s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_conductor [0.019495s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectVersions.test_object_version_check [0.034823s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported [0.055656s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_missing [0.028643s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_set [0.020710s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported [0.035092s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_missing [0.023494s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.test_client.GetClientTestCase.test_get_client [0.358153s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_default [0.023522s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_non_default [0.020115s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_remove [0.019725s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_missing [0.024018s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_set [0.025147s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_missing [0.021740s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_default [0.021162s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_non_default [0.021108s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_remove [0.020708s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_missing [0.019682s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_set [0.035274s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_missing [0.029406s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_default [0.024294s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_non_default [0.022317s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_remove [0.020679s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra [0.032018s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_in_internal_info [0.027328s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_lower_version [0.022003s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_not_in_extra [0.021060s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_as_dict [0.020253s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_create [0.031421s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_create_list [0.041600s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.test_client.GetClientTestCase.test_get_client_connection_problem [0.562830s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy [0.051772s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy_list [0.030651s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_exists [0.029462s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_by_id [0.030471s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_trait_names [0.025240s] ... ok {1} ironic.tests.unit.pxe_filter.test_service.TestSync.test_no_nodes [0.031407s] ... ok {1} ironic.tests.unit.pxe_filter.test_service.TestSync.test_no_nodes_with_discovery [0.040915s] ... ok {1} ironic.tests.unit.pxe_filter.test_service.TestSync.test_nothing_on_inspection [0.039040s] ... ok {1} ironic.tests.unit.pxe_filter.test_service.TestSync.test_sync [0.106889s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.test_client.GetClientTestCase.test_get_client_standalone [0.446135s] ... ok {0} ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_default_interfaces [0.083723s] ... ok {0} ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_agent_rescue [0.041534s] ... ok {0} ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_cinder_storage [0.061830s] ... ok {0} ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_shellinabox [0.046650s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_check_elcm_license_fail_elcm_error [0.033293s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_check_elcm_license_fail_invalid_json [0.025219s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_check_elcm_license_success_with_200 [0.024523s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_check_elcm_license_success_with_500 [0.033722s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_client [0.054342s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_report [0.042607s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_auth_method [0.038979s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_port [0.023813s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_sensor_method [0.026087s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_irmc_version_fail [0.037906s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_irmc_version_success [0.057155s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_disable [0.028247s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_enable [0.026483s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_fail [0.047996s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_update_ipmi_properties [0.043591s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_within_version_ranges_fail_no_match [0.030520s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_within_version_ranges_fail_no_version_set [0.256464s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_within_version_ranges_success [0.040798s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_within_version_ranges_success_out_range [0.048441s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info [0.024754s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_dir_path_verify_ca [0.030644s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_file_path_verify_ca [0.024036s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_auth_method [0.023450s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_port [0.023172s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_sensor_method [0.022465s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_password [0.025642s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_proto [0.026868s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_community [0.024063s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_port [0.023985s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_password [0.023236s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_proto [0.024556s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_security [0.024312s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_user [0.024059s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version [0.022866s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version_fips [0.023588s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_timeout [0.026137s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_verify_ca [0.034885s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_address [0.028637s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_multiple_params [0.024352s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_password [0.025116s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_auth_password [0.024031s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_priv_password [0.025673s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_user [0.023790s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_username [0.023162s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_auth_password [0.023160s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_priv_password [0.022797s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_snmpv3 [0.023437s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_string_bool_verify_ca [0.022927s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_using_snmp_security [0.024791s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_option_default [0.024701s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_snmp_driver_info_with_snmp [0.023033s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_avoid_repeatedly_resume_cleaning [0.050413s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_completing_status [0.039089s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_other_clean_state [0.032871s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_clean_fail [0.043029s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_complete_cleaning [0.039531s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_with_fgi_status_none [0.044964s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_without_raid_config [0.040626s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_fgi_status [0.029315s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_input [0.036370s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_node [0.025614s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_raid_config [0.026938s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state_default [0.055975s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state_ipmi [0.052549s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state_redfish [0.052509s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_properties [0.030443s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on [0.038076s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on_timeout [0.041945s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot [0.039058s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot_timeout [0.039919s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state [0.041251s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state_timeout [0.040550s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_default [0.035159s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_fail_ipmi [0.034495s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_fail_redfish [0.039809s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_ipmi [0.045064s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_redfish [0.047149s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_port [0.037013s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_portgroup [0.044999s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_port [0.220629s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_portgroup [0.040108s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_in_internal_info [0.047368s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_not_attached [0.050139s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_in_internal_info [0.029688s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_not_attached [0.031041s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_port [0.037264s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_portgroup [0.038941s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_cleaning [0.045124s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_provisioning [0.043966s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_rescuing [0.041575s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_tenant_vif [0.046085s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_none [0.045246s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_extra_and_internal_priority [0.049385s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_internal [0.055166s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_port_and_portgroup [0.053179s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_cleaning_network [0.048169s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_inspection_network [0.039019s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_provisioning_network [0.039572s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_configure_tenant_networks [0.046971s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_current_vif [0.040842s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_node_network_data [0.041660s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_properties [0.030446s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_port_changed [0.064485s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_portgroup_changed [0.049261s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_cleaning_network [0.062502s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_inspection_network [0.049473s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_provisioning_network [0.064170s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_unconfigure_tenant_networks [0.051376s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_validate [0.053835s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_attach [0.046757s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_detach [0.045796s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_list [0.044933s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_clean_up_instance_cdrom_and_floppy [0.042655s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_clean_up_instance_only_cdrom [0.038484s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_clean_up_instance_ramdisk [0.039034s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_clean_up_ramdisk [0.039217s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_deploy_info [0.035189s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_deploy_info_exc [0.045234s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_arch_deploy [0.036331s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_arch_rescue [0.032877s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_hierarchy_deploy [0.033864s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_hierarchy_missing_param_deploy [0.046290s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_hierarchy_missing_param_rescue [0.032721s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_hierarchy_rescue [0.031356s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_deploy [0.038935s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_exc [0.035199s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_from_conf_deploy [0.033378s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_from_conf_deploy_by_arch [0.031450s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_from_conf_rescue [0.032205s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_from_conf_rescue_by_arch [0.038375s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_iso [0.033169s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_mixed_source_deploy [0.039926s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_mixed_source_deploy_by_arch [0.044816s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_mixed_source_rescue [0.036605s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_mixed_source_rescue_by_arch [0.032495s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_ramdisk [0.034992s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_rescue [0.035802s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_local_boot_option [0.062703s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_local_whole_disk_image [0.071634s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_normal_boot [0.098380s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_ramdisk_boot [0.268262s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_ramdisk_boot_iso [0.083191s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_ramdisk_boot_iso_boot [0.083035s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_ramdisk_boot_render_configdrive [0.066873s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_ramdisk_fast_track [0.045334s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_ramdisk_no_debug [0.062420s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_ramdisk_with_params [0.067938s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_boot_iso [0.034470s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_correct_vendor [0.032815s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_errors_with_lack_of_support [0.036320s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_inspection [0.035418s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_kernel_ramdisk [0.032094s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_local [0.040222s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_missing [0.052930s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__check_node_firmware_update_done [0.069154s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__check_node_firmware_update_fail [0.068531s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__check_node_firmware_update_fail_servicing [0.068723s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__check_update_in_progress [0.069449s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__execute_firmware_update_no_targets [0.032015s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__execute_firmware_update_targets [0.051652s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__stage_firmware_file_error [0.028174s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__stage_firmware_file_https [0.025714s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__stage_firmware_file_swift [0.048377s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_check_conn_error [0.070921s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_check_update_still_waiting [0.061506s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_check_update_task_monitor_not_found [0.052542s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_check_update_wait_elapsed [0.055666s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_continue_update_waitting [0.053325s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_continue_updates_last [0.062551s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_continue_updates_last_service [0.046972s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_continue_updates_more_updates [0.050470s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_create_all_components [0.280934s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_empty_settings [0.059210s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_empty_settings_service [0.047603s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_get_properties [0.031549s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_invalid_component_in_settings [0.047093s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_invalid_component_in_settings_service [0.053621s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_all_components [0.038105s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_bios_component [0.065363s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_bmc_component [0.058635s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_required_field_in_settings [0.055040s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_required_field_in_settings_service [0.052331s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_simple_update_action [0.052346s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_updateservice [0.048708s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_redfish_fw_updates [0.031875s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_redfish_fw_updates_empty [0.035347s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_validate [0.036309s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup [0.026871s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup_notstaged [0.019880s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup_swift_fails [0.069431s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_file [0.036543s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_http [0.088408s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_invalid [0.032097s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_swift [0.050032s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_get_swift_temp_url [0.026586s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http [0.022098s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http_copyfile [0.039420s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http_copyfile_fails [0.022657s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_local_external [0.032312s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_swift [0.027737s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args [0.021029s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_checksum_missing [0.021686s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_checksum_not_string [0.021791s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_not_list [0.021620s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_source_not_known [0.020261s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_unknown_key [0.020579s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_url_missing [0.021635s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_url_not_string [0.035920s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_wait_not_int [0.025633s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum [0.023135s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum_mismatch [0.022442s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum_sha256 [0.023454s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum_sha512 [0.029012s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_power_state [0.036491s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_properties [0.030788s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_supported_power_states [0.041542s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail [0.073920s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail_on_power_on [0.072670s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_off [0.061876s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_on [0.063766s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_not_reached [0.040483s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state [0.236626s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_conflict_error_handling [0.076744s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_conflict_error_refresh_fails [0.038735s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_fail [0.068916s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_not_reached [0.042119s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_race_condition_handling [0.098451s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_validate [0.032192s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_auto [0.054146s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_basic [0.057358s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_session [0.083242s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_disabled_sessions_cache [0.071545s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_basic_session_caching [0.048196s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_address [0.048022s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_password [0.056599s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_username [0.044983s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_session_reuse [0.047224s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_expire_old_sessions [0.053617s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_create_subscription [0.034946s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_delete_subscription [0.034863s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_all [0.032347s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_cd [0.032140s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions [0.032028s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions_empty [0.032828s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_does_not_exist [0.034823s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_exists [0.035701s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_invalid_delete_subscription [0.222452s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_create_subscription [0.031197s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_delete_subscription [0.031120s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_dev [0.037482s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue [0.047104s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up [0.044446s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_no_manage_boot [0.049449s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_smartnic [0.041915s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_no_manage_agent_boot [0.044405s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_power_on [0.044893s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate [0.040967s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_empty_rescue_password [0.045710s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_no_rescue_password [0.042232s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_no_manage_agent [0.041480s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_with_smartnic_port [0.049927s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue [0.052304s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_no_manage_agent_boot [0.059488s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_power_on [0.054597s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_with_smartnic_port [0.054764s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size [0.043337s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail [0.039327s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail_by_agent_consumed_memory [0.043265s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_disabled [0.042958s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled [0.043065s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_qcow2 [0.044727s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_raw [0.049935s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_without_memory_mb [0.042436s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_http_image [0.028008s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source [0.024412s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source2 [0.023853s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args [0.024439s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_file [0.023850s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_http [0.025661s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_via_node [0.022557s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_not_http [0.022459s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning [0.051574s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_after_reboot [0.056968s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_automated_clean_version_mismatch [0.053893s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_clean_version_mismatch_fail [0.049308s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_fail [0.044917s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_manual_clean_version_mismatch [0.060359s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_no_step_running [0.053924s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_old_command [0.047819s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_reboot [0.059460s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_running [0.044261s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_unknown [0.055468s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook [0.055999s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook_fails [0.053079s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_manual_cleaning [0.054516s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueServiceTest.test_continue_servicing [0.054002s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueServiceTest.test_continue_servicing_after_reboot [0.057326s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueServiceTest.test_continue_servicing_reboot [0.059707s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.ContinueServiceTest.test_continue_servicing_running [0.044899s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning [0.055234s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_fails [0.051283s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_polling [0.049730s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_first_run [0.249175s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_second_run [0.049647s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_servicing [0.055524s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_servicing_fails [0.087161s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_done_raises_with_event [0.051906s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_fails [0.045806s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance [0.082488s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance_abort [0.193452s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state [0.076129s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state2 [0.105617s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_polling [0.050542s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track [0.088403s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track_via_driver_info [0.092326s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_when_appropriate [0.132765s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue [0.048885s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue_fails [0.048220s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean [0.054242s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean_fails [0.104875s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_service [0.060119s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_with_reservation [0.056442s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure [0.036987s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_exception [0.036582s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_none_requested [0.037480s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_unsupported [0.039723s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure [0.036799s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_exception [0.042134s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_none_requested [0.037871s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_unsupported [0.039980s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_bios [0.038328s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_uefi [0.050128s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_okay [0.040268s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_some_other_exception [0.039978s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_anaconda_deploy_image_source [0.027202s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_boot_iso_conflict [0.024730s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_missing_stage2_id [0.025842s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_authorized [0.026088s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_found [0.029767s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_invalid_image_href [0.024045s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_local_boot [0.024540s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_nonglance_image [0.025001s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_ramdisk_deploy [0.024988s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch [0.024290s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_already_raw [0.023755s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_deep_inspection_disabled [0.023487s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_estimate_fallback [0.029533s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_format_does_not_match_glance [0.028088s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_not_safe_image [0.023815s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_part_already_exists [0.026867s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_ramdisk_image [0.024824s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_ramdisk_kernel [0.208874s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_amount_not_satisfied [0.021085s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_cache_still_large [0.020082s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size [0.019615s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size_with_amount [0.021440s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_files_with_links_untouched [0.020200s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_deleted [0.020950s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_with_amount [0.020052s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_cleanup_ordering [0.021150s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_dir_exception [0.022952s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_images_not_cleaned [0.020517s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image [0.027977s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_large_url [0.019768s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_linkfail [0.026810s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_raises_memory_guard [0.024047s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_localhost_as_url_ignored [0.025154s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_localhost_ignored [0.024122s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_normal_ip [0.025231s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_normal_ip_as_url [0.025491s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_normal_ipv6_as_url [0.024767s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_redfish_bmc_address_ipv6_brackets_no_scheme [0.023935s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_resolved_host [0.024777s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_resolved_host_in_url [0.026024s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test__get_inspection_data_from_swift [0.031650s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test__get_inspection_data_from_swift_exception [0.033635s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test__store_inspection_data_in_swift [0.030278s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_db [0.027074s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_db_exception [0.025475s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_nostore [0.025013s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_swift [0.024584s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_swift_exception [0.025289s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_store_inspection_data_db [0.029124s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_store_inspection_data_nostore [0.027123s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_store_inspection_data_swift [0.028159s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_fail [0.021739s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_no_ipmitool [0.026953s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_pass [0.022735s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_fail [0.022582s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_no_ipmitool [0.021154s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_pass [0.020548s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_fail [0.019004s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_no_ipmitool [0.018554s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_pass [0.018996s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_fail [0.019078s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_no_ipmitool [0.018640s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_pass [0.019620s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootBaseUtils.test__node_set_boot_device_for_network_boot [0.037967s] ... ok {0} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_bios [0.018176s] ... ok {0} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_console [0.017668s] ... ok {0} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_inspect [0.018252s] ... ok {0} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_load_by_name [0.021527s] ... ok {0} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_rescue [0.017954s] ... ok {0} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_vendor [0.018248s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.HttpBootTestCase.test_http_boot_enabled [0.034777s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.HttpBootTestCase.test_prepare_ramdisk [0.063869s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.HttpBootTestCase.test_prepare_ramdisk_rescue [0.063620s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.HttpBootTestCase.test_prepare_ramdisk_uefi [0.066563s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_http_boot_not_enabled [0.030725s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue [0.037188s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel [0.039200s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk [0.052482s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test___init__ [0.036443s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_read [0.051254s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_write [0.048408s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v3 [0.047845s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_client [0.028308s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_context [0.049966s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport [0.056480s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_retries [0.051385s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_timeout [0.257348s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_err [0.070278s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get [0.046988s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_engine [0.050977s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_transport [0.046790s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next [0.050139s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_engine [0.060186s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_transport [0.050472s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set [0.050545s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_engine [0.050960s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_transport [0.051074s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc [0.023668s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitch [0.021178s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitchplus [0.021184s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_rackpdu [0.020785s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_aten [0.021835s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_cyberpower [0.021022s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default [0.021021s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version [0.021384s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version_and_missing_community [0.021483s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_eatonpower [0.022999s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_driver [0.021426s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_outlet [0.021991s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_version [0.022530s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_address [0.021895s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v1 [0.021842s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v2c [0.021205s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_driver [0.021980s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_outlet [0.021841s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_user [0.021616s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_raritan_pdu2 [0.021728s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_community [0.020786s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_write_community [0.021118s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry3 [0.020607s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry4 [0.020564s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port [0.019916s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port_default [0.020596s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v1 [0.020991s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v2c [0.020756s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3 [0.020415s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_badproto [0.021008s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_default_proto [0.021143s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_key_proto [0.020750s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_nokey [0.020431s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_short_key [0.021110s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_compat [0.020045s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_engine_id [0.020753s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_name [0.020581s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_badproto [0.020957s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_default_proto [0.020968s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_key_proto [0.021319s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_nokey [0.020364s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_short_key [0.020762s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_teltronix [0.020311s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_vertivgeist_pdu [0.020901s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_write_community [0.021566s] ... ok {0} ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_clean_and_deploy_step_all_args [0.018721s] ... ok {0} ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_all_args [0.017705s] ... ok {0} ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_priority_only [0.017841s] ... ok {0} ironic.tests.unit.drivers.test_base.TestBareDriver.test_class_variables [0.017858s] ... ok {0} ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_default_interfaces [0.036271s] ... ok {0} ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties [0.026730s] ... ok {0} ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties_none [0.026808s] ... ok {0} ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_supported_interfaces [0.252268s] ... ok {0} ironic.tests.unit.drivers.test_ilo.Ilo5HardwareTestCase.test_default_interfaces [0.043390s] ... ok {0} ironic.tests.unit.drivers.test_ilo.Ilo5HardwareTestCase.test_override_raid [0.068638s] ... ok {0} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_default_interfaces [0.067400s] ... ok {0} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_agent_rescue [0.037393s] ... ok {0} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_inspector [0.040341s] ... ok {0} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_no_bios [0.043589s] ... ok {0} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_pxe [0.038232s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability [0.045186s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability_append [0.046905s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability_append_duplicate [0.045491s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_not_string [0.024711s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_to_dict [0.028455s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_to_dict_with_incorrect_format_fail [0.024040s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_to_dict_with_invalid_character_fail [0.025197s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_to_dict_with_only_key_or_value_fail [0.025129s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_ensure_next_boot_device [0.041994s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_ensure_next_boot_device_clears_is_next_boot_persistent [0.044911s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_force_persistent_boot_false [0.054786s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_force_persistent_boot_true [0.048897s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_get_node_capability [0.037263s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_get_node_capability_returns_none [0.023443s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_get_node_mac_addresses [0.049954s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_normalize_mac_string [0.030037s] ... ok {0} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_normalize_mac_unicode [0.027452s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_create [0.024428s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_bad_id_and_uuid_and_name [0.021821s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_by_id [0.031910s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_by_name [0.022173s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_by_uuid [0.022227s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_list [0.022523s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_payload_schemas [0.024449s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_refresh [0.020966s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_save [0.020985s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_save_after_refresh [0.028562s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_missing [0.020079s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_set [0.019591s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_missing [0.021414s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_default [0.019878s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default [0.020204s] ... ok {0} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_remove [0.020132s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_create [0.020879s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_bad_id_and_uuid [0.023944s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_id [0.019818s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_uuid [0.019373s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_list [0.019527s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_payload_schemas [0.019832s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_refresh [0.023272s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save [0.023744s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_save_after_refresh [0.029349s] ... ok {0} ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_bad_value [0.019970s] ... ok {0} ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_good_value [0.018107s] ... ok {0} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test__repr__includes_default_function_name_and_source_hash [0.020058s] ... ok {0} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_default_as_function [0.018224s] ... ok {0} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function [0.028596s] ... ok {0} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function_invalid_type [0.020464s] ... ok {0} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_invalid_type [0.017831s] ... ok {0} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_string [0.018761s] ... ok {0} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_create [0.021238s] ... ok {0} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_destroy [0.021778s] ... ok {0} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get [0.023232s] ... ok {0} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_id [0.024595s] ... ok {0} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_uuid [0.023572s] ... ok {0} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list [0.021125s] ... ok {0} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_by_node_id [0.021215s] ... ok {0} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_none [0.021904s] ... ok {0} ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_chooses_newer_properly [0.019338s] ... ok {0} ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_keeps_newer_properly [0.022030s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_create [0.022838s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_get_bad_id_and_uuid_and_name_and_address [0.026129s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_address [0.031998s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_id [0.039827s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_name [0.048797s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_uuid [0.033287s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_list [0.025527s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_list_deprecated_owner [0.026365s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_payload_schemas [0.409697s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_refresh [0.026660s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_save [0.025085s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_save_after_refresh [0.043112s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_supported [0.026491s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_unsupported [0.021326s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_supported [0.026208s] ... ok {0} ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_unsupported [0.022536s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra [0.020669s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_in_internal_info [0.019537s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_lower_version [0.019243s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_not_in_extra [0.021020s] ... ok {0} ironic.tests.unit.pxe_filter.test_service.TestManager.test_init_and_run [0.030575s] ... ok {0} ironic.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute [0.018707s] ... ok {0} ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute [0.018312s] ... ok {0} ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute_parent_mocked [0.018609s] ... ok ====== Totals ====== Ran: 9665 tests in 254.6611 sec. - Passed: 9615 - Skipped: 50 - Expected Fail: 0 - Unexpected Success: 0 - Failed: 0 Sum of execute time for each test: 856.7662 sec. ============== Worker Balance ============== - Worker 0 (2878 tests) => 0:04:14.101668 - Worker 1 (2204 tests) => 0:03:49.903076 - Worker 2 (2248 tests) => 0:03:02.090732 - Worker 3 (2335 tests) => 0:03:22.934858 Test id Runtime (s) ----------------------------------------------------------------------------------------------------------------------------- ----------- ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on 4.128 ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit 3.717 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout 3.165 ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized 3.150 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout 3.118 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok 2.176 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok 2.102 ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_simple 2.077 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_off_fail 2.043 ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_retries_without_log_mock 1.708 ___________________________________ summary ____________________________________ py39: commands succeeded congratulations :) + RPM_EC=0 ++ jobs -p + exit 0 Processing files: openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.noarch Provides: openstack-ironic = 1:26.1.5-0.20251111185332.f2a4a74.el9 Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh Requires: /usr/bin/python3 Processing files: openstack-ironic-common-26.1.5-0.20251111185332.f2a4a74.el9.noarch warning: File not found: /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/lib/python3.9/site-packages/ironic_tests.egg_info Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.Dvb6o6 + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + DOCDIR=/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/doc/openstack-ironic-common + export LC_ALL=C + LC_ALL=C + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/doc/openstack-ironic-common + cp -pr README.rst /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/doc/openstack-ironic-common + cp -pr etc/ironic/policy.yaml.sample /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/doc/openstack-ironic-common + RPM_EC=0 ++ jobs -p + exit 0 Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.svO29m + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + LICENSEDIR=/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/licenses/openstack-ironic-common + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/licenses/openstack-ironic-common + cp -pr LICENSE /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/licenses/openstack-ironic-common + RPM_EC=0 ++ jobs -p + exit 0 Provides: config(openstack-ironic-common) = 1:26.1.5-0.20251111185332.f2a4a74.el9 openstack-ironic-common = 1:26.1.5-0.20251111185332.f2a4a74.el9 python3.9dist(ironic) = 26.1.5~~dev2 python3dist(ironic) = 26.1.5~~dev2 Requires(interp): /bin/sh Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(pre): /bin/sh shadow-utils Requires: /usr/bin/python3 /usr/bin/sh python(abi) = 3.9 python3.9dist(alembic) >= 1.4.2 python3.9dist(automaton) >= 1.9 python3.9dist(construct) >= 2.9.39 python3.9dist(eventlet) >= 0.30.1 python3.9dist(futurist) >= 1.2 python3.9dist(ironic-lib) >= 6 python3.9dist(jinja2) >= 3 python3.9dist(jsonpatch) >= 1.16 python3.9dist(jsonschema) >= 4 python3.9dist(keystoneauth1) >= 4.2 python3.9dist(keystonemiddleware) >= 9.5 python3.9dist(microversion-parse) >= 1.0.1 python3.9dist(netaddr) python3.9dist(openstacksdk) >= 0.99 python3.9dist(os-traits) >= 0.4 python3.9dist(oslo-concurrency) >= 4.2 python3.9dist(oslo-config) >= 6.8 python3.9dist(oslo-context) >= 2.22 python3.9dist(oslo-db) >= 9.1 python3.9dist(oslo-log) >= 4.3 python3.9dist(oslo-messaging) >= 14.1 python3.9dist(oslo-middleware) >= 3.31 python3.9dist(oslo-policy) >= 4.4 python3.9dist(oslo-rootwrap) >= 5.8 python3.9dist(oslo-serialization) >= 2.25 python3.9dist(oslo-service) >= 1.24 python3.9dist(oslo-upgradecheck) >= 1.3 python3.9dist(oslo-utils) >= 4.5 python3.9dist(oslo-versionedobjects) >= 1.31.2 python3.9dist(osprofiler) >= 1.5 python3.9dist(pbr) >= 3.1.1 python3.9dist(pecan) >= 1 python3.9dist(psutil) >= 3.2.2 python3.9dist(pycdlib) >= 1.11 python3.9dist(requests) >= 2.18 python3.9dist(rfc3986) >= 1.2 python3.9dist(sqlalchemy) >= 1.4 python3.9dist(stevedore) >= 1.29 python3.9dist(sushy) >= 4.8 python3.9dist(tenacity) >= 6.3.1 python3.9dist(tooz) >= 2.7 python3.9dist(webob) >= 1.7.1 Recommends: ipmitool python3-dracclient >= 5.1.0 python3-proliantutils >= 2.10.0 python3-pyasn1-lextudio >= 1.1.0 python3-pysnmp-lextudio >= 5.0.0 python3-scciclient >= 0.8.0 Suggests: python3-oslo-i18n >= 3.15.3 python3-oslo-reports >= 1.18.0 Processing files: openstack-ironic-api-26.1.5-0.20251111185332.f2a4a74.el9.noarch Provides: openstack-ironic-api = 1:26.1.5-0.20251111185332.f2a4a74.el9 Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh Requires: /usr/bin/python3 Processing files: openstack-ironic-conductor-26.1.5-0.20251111185332.f2a4a74.el9.noarch Provides: openstack-ironic-conductor = 1:26.1.5-0.20251111185332.f2a4a74.el9 Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh Requires: /usr/bin/python3 Recommends: syslinux-nonlinux Processing files: openstack-ironic-dnsmasq-tftp-server-26.1.5-0.20251111185332.f2a4a74.el9.noarch Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.DKJoD8 + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + LICENSEDIR=/builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/licenses/openstack-ironic-dnsmasq-tftp-server + export LC_ALL=C + LC_ALL=C + export LICENSEDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/licenses/openstack-ironic-dnsmasq-tftp-server + cp -pr LICENSE /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64/usr/share/licenses/openstack-ironic-dnsmasq-tftp-server + RPM_EC=0 ++ jobs -p + exit 0 Provides: config(openstack-ironic-dnsmasq-tftp-server) = 1:26.1.5-0.20251111185332.f2a4a74.el9 openstack-ironic-dnsmasq-tftp-server = 1:26.1.5-0.20251111185332.f2a4a74.el9 Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh Processing files: openstack-ironic-pxe-filter-26.1.5-0.20251111185332.f2a4a74.el9.noarch Provides: openstack-ironic-pxe-filter = 1:26.1.5-0.20251111185332.f2a4a74.el9 Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires(post): /bin/sh Requires(preun): /bin/sh Requires(postun): /bin/sh Requires: /usr/bin/python3 Processing files: python3-ironic-tests-26.1.5-0.20251111185332.f2a4a74.el9.noarch Provides: python-ironic-tests = 1:26.1.5-0.20251111185332.f2a4a74.el9 python3-ironic-tests = 1:26.1.5-0.20251111185332.f2a4a74.el9 python3.9-ironic-tests = 1:26.1.5-0.20251111185332.f2a4a74.el9 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Requires: python(abi) = 3.9 Obsoletes: python39-ironic-tests < 1:26.1.5-0.20251111185332.f2a4a74.el9 Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.src.rpm Wrote: /builddir/build/RPMS/openstack-ironic-dnsmasq-tftp-server-26.1.5-0.20251111185332.f2a4a74.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-api-26.1.5-0.20251111185332.f2a4a74.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-pxe-filter-26.1.5-0.20251111185332.f2a4a74.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-conductor-26.1.5-0.20251111185332.f2a4a74.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-common-26.1.5-0.20251111185332.f2a4a74.el9.noarch.rpm Wrote: /builddir/build/RPMS/python3-ironic-tests-26.1.5-0.20251111185332.f2a4a74.el9.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.Cavae7 + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.5.dev2 + /usr/bin/rm -rf /builddir/build/BUILDROOT/openstack-ironic-26.1.5-0.20251111185332.f2a4a74.el9.x86_64 + RPM_EC=0 ++ jobs -p + exit 0 Child return code was: 0