Mock Version: 6.7 Mock Version: 6.7 Mock Version: 6.7 Mock Version: 6.7 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.6-0.20260412074315.1a3eba7.el9.src.rpm Child return code was: 0 Mock Version: 6.7 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.6-0.20260412074315.1a3eba7.el9.src.rpm Child return code was: 0 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.6-0.20260412074315.1a3eba7.el9.src.rpm Child return code was: 0 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.VAnaJM + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf ironic-26.1.6.dev2 + /usr/bin/gzip -dc /builddir/build/SOURCES/ironic-26.1.6.dev2-0.20260412074315.1a3eba7.tar.gz + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd ironic-26.1.6.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.6 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.1OP69H + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.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.6.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.6.dev2/.pyproject-builddir + RPM_TOXENV=py39 + FEDORA= + 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.6.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. 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.NTsrMP + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.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.6.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.6.dev2/.pyproject-builddir + RPM_TOXENV=py39 + FEDORA= + 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.6.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.16 from tox itself Requirement not satisfied: tox-current-env >= 0.0.16 Exiting dependency generation pass: tox itself + cat /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. 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.SCt88v + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.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.6.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.6.dev2/.pyproject-builddir + RPM_TOXENV=py39 + FEDORA= + 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.6.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.16 from tox itself Requirement satisfied: tox-current-env >= 0.0.16 (installed: tox-current-env 0.0.16) ___________________________________ 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 Handling setuptools>=64.0.0,<82.0.0 from tox --print-deps-only: py39 Requirement satisfied: setuptools>=64.0.0,<82.0.0 (installed: setuptools 65.5.1) /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.6.dev2/ironic-26.1.6.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.6-0.20260412074315.1a3eba7.el9.x86_64-pyproject-buildrequires + rm -rfv ironic-26.1.6.dev2.dist-info/ removed 'ironic-26.1.6.dev2.dist-info/LICENSE' removed 'ironic-26.1.6.dev2.dist-info/AUTHORS' removed 'ironic-26.1.6.dev2.dist-info/METADATA' removed 'ironic-26.1.6.dev2.dist-info/entry_points.txt' removed 'ironic-26.1.6.dev2.dist-info/pbr.json' removed 'ironic-26.1.6.dev2.dist-info/top_level.txt' removed directory 'ironic-26.1.6.dev2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. 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.E8DirG + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.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.6.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.6.dev2/.pyproject-builddir + RPM_TOXENV=py39 + FEDORA= + 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.6.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.16 from tox itself Requirement satisfied: tox-current-env >= 0.0.16 (installed: tox-current-env 0.0.16) ___________________________________ 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) Handling setuptools>=64.0.0,<82.0.0 from tox --print-deps-only: py39 Requirement satisfied: setuptools>=64.0.0,<82.0.0 (installed: setuptools 65.5.1) /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.6.dev2/ironic-26.1.6.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.6-0.20260412074315.1a3eba7.el9.x86_64-pyproject-buildrequires + rm -rfv ironic-26.1.6.dev2.dist-info/ removed 'ironic-26.1.6.dev2.dist-info/LICENSE' removed 'ironic-26.1.6.dev2.dist-info/AUTHORS' removed 'ironic-26.1.6.dev2.dist-info/METADATA' removed 'ironic-26.1.6.dev2.dist-info/top_level.txt' removed 'ironic-26.1.6.dev2.dist-info/pbr.json' removed 'ironic-26.1.6.dev2.dist-info/entry_points.txt' removed directory 'ironic-26.1.6.dev2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.buildreqs.nosrc.rpm Child return code was: 11 Dynamic buildrequires detected Going to install missing buildrequires. See root.log for details. 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.So0EVu + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.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.6.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.6.dev2/.pyproject-builddir + RPM_TOXENV=py39 + FEDORA= + 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.6.dev2/pyproject-wheeldir --output /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.16 from tox itself Requirement satisfied: tox-current-env >= 0.0.16 (installed: tox-current-env 0.0.16) ___________________________________ 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) Handling setuptools>=64.0.0,<82.0.0 from tox --print-deps-only: py39 Requirement satisfied: setuptools>=64.0.0,<82.0.0 (installed: setuptools 65.5.1) /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.6.dev2/ironic-26.1.6.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.6-0.20260412074315.1a3eba7.el9.x86_64-pyproject-buildrequires + rm -rfv ironic-26.1.6.dev2.dist-info/ removed 'ironic-26.1.6.dev2.dist-info/AUTHORS' removed 'ironic-26.1.6.dev2.dist-info/LICENSE' removed 'ironic-26.1.6.dev2.dist-info/METADATA' removed 'ironic-26.1.6.dev2.dist-info/entry_points.txt' removed 'ironic-26.1.6.dev2.dist-info/pbr.json' removed 'ironic-26.1.6.dev2.dist-info/top_level.txt' removed directory 'ironic-26.1.6.dev2.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.nBPvig + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.dev2 + mkdir -p /builddir/build/BUILD/ironic-26.1.6.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.6.dev2/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py /builddir/build/BUILD/ironic-26.1.6.dev2/pyproject-wheeldir Processing /builddir/build/BUILD/ironic-26.1.6.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.6.dev2/.pyproject-builddir/tmp0cc039qh /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.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic.egg-info writing /builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic.egg-info/PKG-INFO writing dependency_links to /builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic.egg-info/dependency_links.txt writing entry points to /builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic.egg-info/entry_points.txt writing requirements to /builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic.egg-info/requires.txt writing top-level names to /builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic.egg-info/top_level.txt writing pbr to /builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic.egg-info/pbr.json [pbr] Processing SOURCES.txt writing manifest file '/builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/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.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic.egg-info/SOURCES.txt' creating '/builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-modern-metadata-250hjh0l/ironic-26.1.6.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.6.dev2/.pyproject-builddir/tmp7l38eakx /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/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/tests creating build/lib/ironic/tests/unit creating build/lib/ironic/tests/unit/api 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/drivers creating build/lib/ironic/drivers/modules 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 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/drivers creating build/lib/ironic/tests/unit/drivers/modules 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 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/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/auth_basic.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/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/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/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 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/drivers/modules/ibmc copying ironic/tests/unit/drivers/modules/ibmc/__init__.py -> build/lib/ironic/tests/unit/drivers/modules/ibmc 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 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/functional copying ironic/tests/functional/__init__.py -> build/lib/ironic/tests/functional 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 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 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/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/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/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/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 copying ironic/version.py -> build/lib/ironic copying ironic/__init__.py -> build/lib/ironic 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 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/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 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 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/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 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/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/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/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 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/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/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/base.py -> build/lib/ironic/tests copying ironic/tests/__init__.py -> build/lib/ironic/tests 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 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/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 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/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 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/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/drivers/modules/ibmc copying ironic/drivers/modules/ibmc/__init__.py -> build/lib/ironic/drivers/modules/ibmc 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 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/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/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/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 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/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/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/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/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/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/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/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 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) 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 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 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 copying ironic/common/grub_conf.template -> build/lib/ironic/common copying ironic/common/isolinux_config.template -> build/lib/ironic/common 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/raid_config_schema.json -> build/lib/ironic/drivers 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 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/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/api/controllers/v1/network-data-schema.json -> build/lib/ironic/api/controllers/v1 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 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/drivers/modules/inspector/hooks/known_accelerators.yaml -> build/lib/ironic/drivers/modules/inspector/hooks 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/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/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/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/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/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/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/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/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/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/auth_basic.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/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 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/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/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/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/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 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/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/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/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 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 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 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/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 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 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/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 running install_data creating build/bdist.linux-x86_64/wheel/ironic-26.1.6.dev2.data creating build/bdist.linux-x86_64/wheel/ironic-26.1.6.dev2.data/data creating build/bdist.linux-x86_64/wheel/ironic-26.1.6.dev2.data/data/etc creating build/bdist.linux-x86_64/wheel/ironic-26.1.6.dev2.data/data/etc/ironic copying etc/ironic/rootwrap.conf -> build/bdist.linux-x86_64/wheel/ironic-26.1.6.dev2.data/data/etc/ironic creating build/bdist.linux-x86_64/wheel/ironic-26.1.6.dev2.data/data/etc/ironic/rootwrap.d copying etc/ironic/rootwrap.d/ironic-utils.filters -> build/bdist.linux-x86_64/wheel/ironic-26.1.6.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.6.dev2-py3.9.egg-info running install_scripts Installing ironic-api-wsgi script to build/bdist.linux-x86_64/wheel/ironic-26.1.6.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.6.dev2.dist-info/WHEEL creating '/builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir/pip-wheel-vutjp9ys/tmp_q5g66vn/ironic-26.1.6.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/auth_basic.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.6.dev2.data/data/etc/ironic/rootwrap.conf' adding 'ironic-26.1.6.dev2.data/data/etc/ironic/rootwrap.d/ironic-utils.filters' adding 'ironic-26.1.6.dev2.data/scripts/ironic-api-wsgi' adding 'ironic-26.1.6.dev2.dist-info/AUTHORS' adding 'ironic-26.1.6.dev2.dist-info/LICENSE' adding 'ironic-26.1.6.dev2.dist-info/METADATA' adding 'ironic-26.1.6.dev2.dist-info/WHEEL' adding 'ironic-26.1.6.dev2.dist-info/entry_points.txt' adding 'ironic-26.1.6.dev2.dist-info/pbr.json' adding 'ironic-26.1.6.dev2.dist-info/top_level.txt' adding 'ironic-26.1.6.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.6.dev2-py3-none-any.whl size=2018635 sha256=0bf1516351faa55629dc8b5cab0fdded5b2a660dbe9eeeb333ffbb262be9258f Stored in directory: /builddir/.cache/pip/wheels/1d/02/09/ddd21c4cf6f61e72f1db158c72cb126e4922d10a0113819c8b Successfully built ironic + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.AGUqEs + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64 '!=' / ']' + rm -rf /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64 ++ dirname /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64 + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64 + cd ironic-26.1.6.dev2 ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' ++ ls /builddir/build/BUILD/ironic-26.1.6.dev2/pyproject-wheeldir/ironic-26.1.6.dev2-py3-none-any.whl ++ xargs basename --multiple + specifier=ironic==26.1.6.dev2 + '[' -z ironic==26.1.6.dev2 ']' + TMPDIR=/builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6.dev2/pyproject-wheeldir ironic==26.1.6.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.6.dev2/pyproject-wheeldir Processing ./pyproject-wheeldir/ironic-26.1.6.dev2-py3-none-any.whl Installing collected packages: ironic changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-api to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-conductor to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-dbsync to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-pxe-filter to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-rootwrap to 755 changing mode of /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-status to 755 Successfully installed ironic-26.1.6.dev2 + '[' -d /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-api /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-api-wsgi /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-conductor /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-dbsync /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-pxe-filter /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-rootwrap /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-status /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-api: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-api-wsgi: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-conductor: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-dbsync: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-pxe-filter: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-rootwrap: updating /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/ironic-status: updating + rm -rfv /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin/__pycache__ + rm -f /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages ']' + site_dirs+=("/usr/lib/python3.9/site-packages") + '[' /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib64/python3.9/site-packages '!=' /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages ']' + '[' -d /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64$site_dir/*.dist-info + echo '%ghost %dir /usr/lib/python3.9/site-packages/ironic-26.1.6.dev2.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.6.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.6-0.20260412074315.1a3eba7.el9.x86_64 --record /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.6.dev2.dist-info/RECORD --output /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64-pyproject-record + rm -fv /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.6.dev2.dist-info/RECORD removed '/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.6.dev2.dist-info/RECORD' + rm -fv /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.6.dev2.dist-info/REQUESTED removed '/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages/ironic-26.1.6.dev2.dist-info/REQUESTED' ++ wc -l /builddir/build/BUILD/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64/etc/logrotate.d/openstack-ironic + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/systemd/system + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/etc/sudoers.d + install -p -D -m 440 /builddir/build/SOURCES/ironic-sudoers /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/etc/sudoers.d/ironic + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/var/lib/ironic/ + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/var/log/ironic/ + mkdir -p /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/etc/ironic/rootwrap.d + export PYTHONPATH=/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64//usr/lib/python3.9/site-packages + PYTHONPATH=/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64/usr/etc/ironic/rootwrap.conf /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64//etc/ironic/rootwrap.conf + mv /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/etc/ironic/rootwrap.d/ironic-utils.filters /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64//etc/ironic/rootwrap.d/ + rmdir /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/etc/ironic/rootwrap.d + rmdir /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/etc/ironic + install -p -D -m 640 /builddir/build/SOURCES/ironic-dist.conf /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64//etc/ironic/dnsmasq-tftp-server.conf + /usr/bin/find-debuginfo -j4 --strict-build-id -m -i --build-id-seed 26.1.6-0.20260412074315.1a3eba7.el9 --unique-debug-suffix -26.1.6-0.20260412074315.1a3eba7.el9.x86_64 --unique-debug-src-base openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6.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.6-0.20260412074315.1a3eba7.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.s6D9UP + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.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.6-0.20260412074315.1a3eba7.el9.x86_64/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin + PYTHONPATH=/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib64/python3.9/site-packages:/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS=' --ignore=/builddir/build/BUILD/ironic-26.1.6.dev2/.pyproject-builddir' + PYTEST_XDIST_AUTO_NUM_WORKERS=4 + HOSTNAME=rpmbuild + /usr/bin/python3 -m tox --current-env --assert-config -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( {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill [0.781636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'd65bc30e-9ba1-4682-85f2-1fe049615945', 'owner': None, 'node': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/d65bc30e-9ba1-4682-85f2-1fe049615945 Openstack-Request-Id: req-3c3ff948-38de-45e2-92e0-d04839ddc9b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d65bc30e-9ba1-4682-85f2-1fe049615945", "created_at": "2026-04-12T07:46:34.524668+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/d65bc30e-9ba1-4682-85f2-1fe049615945", "rel": "self"}, {"href": "http://localhost/allocations/d65bc30e-9ba1-4682-85f2-1fe049615945", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/d65bc30e-9ba1-4682-85f2-1fe049615945 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-db7fb63b-0713-446d-9c1c-b3d28eccdc3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d65bc30e-9ba1-4682-85f2-1fe049615945", "created_at": "2026-04-12T07:46:34.524668+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/d65bc30e-9ba1-4682-85f2-1fe049615945", "rel": "self"}, {"href": "http://localhost/allocations/d65bc30e-9ba1-4682-85f2-1fe049615945", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} 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 {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbid_owner_proj_mismatch [0.652762s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?owner=54321 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-24ec15fd-0ef7-420e-b340-650e367e2714 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 {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbidden [0.047637s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2da3779e-362d-4086-baea-22d377a4c66b 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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_forbidden_no_project [0.058773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9ec46b88-27fc-4cc8-88f9-44b1c095c87c 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.v1.test_allocation.TestPost.test_backfill_copy_instance_uuid [0.155501s] ... 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/cca96fe4-e3c5-4767-94d1-ad76fae23aa6 Openstack-Request-Id: req-612bd786-7fbe-4ad2-80a2-b6f7598f0e08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "cca96fe4-e3c5-4767-94d1-ad76fae23aa6", "created_at": "2026-04-12T07:46:34.682449+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/cca96fe4-e3c5-4767-94d1-ad76fae23aa6", "rel": "self"}, {"href": "http://localhost/allocations/cca96fe4-e3c5-4767-94d1-ad76fae23aa6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/cca96fe4-e3c5-4767-94d1-ad76fae23aa6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2c89be06-b902-4277-970d-c23e67fe3652 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "cca96fe4-e3c5-4767-94d1-ad76fae23aa6", "created_at": "2026-04-12T07:46:34.682449+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/cca96fe4-e3c5-4767-94d1-ad76fae23aa6", "rel": "self"}, {"href": "http://localhost/allocations/cca96fe4-e3c5-4767-94d1-ad76fae23aa6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_get_all_invalid_api_version [0.043120s] ... 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\"}"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_node_not_found [0.094831s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '09b4b784-9e76-4703-b132-0095a8f1620e', 'owner': None, 'node': '486e09ac-8d2e-4701-aea1-af8f152056e7'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-064a0277-ff30-4157-b01e-8f098462c3d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 486e09ac-8d2e-4701-aea1-af8f152056e7 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_not_allowed [0.049934s] ... 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-3de52541-627d-4415-9b14-2bf471af42ab 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_allocation_get_all_non_admin [0.117729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a2cf9a58-18a5-4516-87bc-4e9837ad4449 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": "b70c975a-1803-4c4f-ae8a-5922e3a49a8a", "created_at": "2026-04-12T07:46:34.849416+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/b70c975a-1803-4c4f-ae8a-5922e3a49a8a", "rel": "self"}, {"href": "http://localhost/allocations/b70c975a-1803-4c4f-ae8a-5922e3a49a8a", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "270fae17-aecf-4555-a01c-07db0f5522e6", "created_at": "2026-04-12T07:46:34.850595+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/270fae17-aecf-4555-a01c-07db0f5522e6", "rel": "self"}, {"href": "http://localhost/allocations/270fae17-aecf-4555-a01c-07db0f5522e6", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "a7392b32-be56-4623-8308-e025017a7235", "created_at": "2026-04-12T07:46:34.853529+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/a7392b32-be56-4623-8308-e025017a7235", "rel": "self"}, {"href": "http://localhost/allocations/a7392b32-be56-4623-8308-e025017a7235", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "82c12b62-ba79-4353-9e0c-db7a36e51ba4", "created_at": "2026-04-12T07:46:34.854449+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/82c12b62-ba79-4353-9e0c-db7a36e51ba4", "rel": "self"}, {"href": "http://localhost/allocations/82c12b62-ba79-4353-9e0c-db7a36e51ba4", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "0a4b315e-682c-4b92-ab21-49cece7190d0", "created_at": "2026-04-12T07:46:34.855345+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/0a4b315e-682c-4b92-ab21-49cece7190d0", "rel": "self"}, {"href": "http://localhost/allocations/0a4b315e-682c-4b92-ab21-49cece7190d0", "rel": "bookmark"}], "node_uuid": null}]} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_with_name [0.081945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '6755084a-52ba-4bde-b397-7238b46ed02a', 'owner': None, 'node': 'backfill-me'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/6755084a-52ba-4bde-b397-7238b46ed02a Openstack-Request-Id: req-6fa4021f-c3dd-4516-a037-2cd8edcc5fec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6755084a-52ba-4bde-b397-7238b46ed02a", "created_at": "2026-04-12T07:46:34.931964+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/6755084a-52ba-4bde-b397-7238b46ed02a", "rel": "self"}, {"href": "http://localhost/allocations/6755084a-52ba-4bde-b397-7238b46ed02a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/6755084a-52ba-4bde-b397-7238b46ed02a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd8f6146-3047-48ba-b073-220251c80fee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6755084a-52ba-4bde-b397-7238b46ed02a", "created_at": "2026-04-12T07:46:34.931964+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/6755084a-52ba-4bde-b397-7238b46ed02a", "rel": "self"}, {"href": "http://localhost/allocations/6755084a-52ba-4bde-b397-7238b46ed02a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_hidden_in_lower_version [0.081993s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/a65e2192-958b-42d1-b343-2d638cf202c1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-440b71b0-4a04-400c-bc7f-6a83da7c6fb2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"uuid": "a65e2192-958b-42d1-b343-2d638cf202c1", "created_at": "2026-04-12T07:46:34.904911+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/a65e2192-958b-42d1-b343-2d638cf202c1", "rel": "self"}, {"href": "http://localhost/allocations/a65e2192-958b-42d1-b343-2d638cf202c1", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/a65e2192-958b-42d1-b343-2d638cf202c1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03984259-fefd-4f38-9b4a-12efcb534528 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a65e2192-958b-42d1-b343-2d638cf202c1", "created_at": "2026-04-12T07:46:34.904911+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/a65e2192-958b-42d1-b343-2d638cf202c1", "rel": "self"}, {"href": "http://localhost/allocations/a65e2192-958b-42d1-b343-2d638cf202c1", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_null_field [0.091629s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/c486b1c1-4ff8-4db3-aa12-eb7950ac2c60 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f7b1c7ba-8c10-4df7-8aac-69238d3d03dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c486b1c1-4ff8-4db3-aa12-eb7950ac2c60", "created_at": "2026-04-12T07:46:35.032158+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/c486b1c1-4ff8-4db3-aa12-eb7950ac2c60", "rel": "self"}, {"href": "http://localhost/allocations/c486b1c1-4ff8-4db3-aa12-eb7950ac2c60", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_backfill_without_resource_class [0.097591s] ... 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/56f085be-d067-4c08-b048-1ecf0d166cb3 Openstack-Request-Id: req-d0214b77-4006-4cad-9836-31f5e2e0fb4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "56f085be-d067-4c08-b048-1ecf0d166cb3", "created_at": "2026-04-12T07:46:35.037050+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/56f085be-d067-4c08-b048-1ecf0d166cb3", "rel": "self"}, {"href": "http://localhost/allocations/56f085be-d067-4c08-b048-1ecf0d166cb3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/56f085be-d067-4c08-b048-1ecf0d166cb3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3fccab4b-8a36-4b48-ae2a-c386352fb3b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "56f085be-d067-4c08-b048-1ecf0d166cb3", "created_at": "2026-04-12T07:46:35.037050+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/56f085be-d067-4c08-b048-1ecf0d166cb3", "rel": "self"}, {"href": "http://localhost/allocations/56f085be-d067-4c08-b048-1ecf0d166cb3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_allocation_owner_present [0.056171s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/85ee987b-ff4f-499c-9054-a159900a3dbc WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c6c4a46e-c88f-47f0-95ea-39d6bfc64d4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "85ee987b-ff4f-499c-9054-a159900a3dbc", "created_at": "2026-04-12T07:46:35.088383+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/85ee987b-ff4f-499c-9054-a159900a3dbc", "rel": "self"}, {"href": "http://localhost/allocations/85ee987b-ff4f-499c-9054-a159900a3dbc", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation [0.067922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '9764d50f-6ab7-4bce-8b8e-0cee298b2700', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/9764d50f-6ab7-4bce-8b8e-0cee298b2700 Openstack-Request-Id: req-ade2ba86-a832-438c-b7d0-656e003d5770 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9764d50f-6ab7-4bce-8b8e-0cee298b2700", "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/9764d50f-6ab7-4bce-8b8e-0cee298b2700", "rel": "self"}, {"href": "http://localhost/allocations/9764d50f-6ab7-4bce-8b8e-0cee298b2700", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/9764d50f-6ab7-4bce-8b8e-0cee298b2700 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c650ceb0-4f6d-4266-bcab-c2f293e21768 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9764d50f-6ab7-4bce-8b8e-0cee298b2700", "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/9764d50f-6ab7-4bce-8b8e-0cee298b2700", "rel": "self"}, {"href": "http://localhost/allocations/9764d50f-6ab7-4bce-8b8e-0cee298b2700", "rel": "bookmark"}], "node_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_invalid_node [0.032990s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/node/15afd284-7cbd-4aad-b4cf-5400dee7c2e3/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_allocation.TestPost.test_create_allocation_candidate_node_invalid [0.058416s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': ['this/is/not a/node/name'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '773c3e54-1039-4526-a957-6be0350ada63', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3f6bc2fd-9334-48d0-9009-7282b93cd868 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_by_node_resource_not_existed [0.044103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/node/9f0179ce-e790-4c89-9b58-43d7f81f8749/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_allocation.TestPost.test_create_allocation_candidate_node_not_found [0.053334s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': ['1a1a1a1a-2b2b-3c3c-4d4d-5e5e5e5e5e5e'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '33255ba3-6b13-458e-98d1-96699b4af40a', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e927d84d-4e28-444f-a20e-cf1e741f3843 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links [0.062160s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d152de03-cc46-4ff7-820f-c243a6fb197c 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": "29f40910-2cff-4184-bf57-1cb8cc6fe8ad", "created_at": "2026-04-12T07:46:35.229800+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/29f40910-2cff-4184-bf57-1cb8cc6fe8ad", "rel": "self"}, {"href": "http://localhost/allocations/29f40910-2cff-4184-bf57-1cb8cc6fe8ad", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "99da60ff-9607-43b2-87b4-ac779d2caf8d", "created_at": "2026-04-12T07:46:35.231437+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/99da60ff-9607-43b2-87b4-ac779d2caf8d", "rel": "self"}, {"href": "http://localhost/allocations/99da60ff-9607-43b2-87b4-ac779d2caf8d", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "5d58b583-5d69-4ece-8d55-e92a2110bd6a", "created_at": "2026-04-12T07:46:35.232400+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/5d58b583-5d69-4ece-8d55-e92a2110bd6a", "rel": "self"}, {"href": "http://localhost/allocations/5d58b583-5d69-4ece-8d55-e92a2110bd6a", "rel": "bookmark"}], "node_uuid": null}], "next": "http://localhost/v1/allocations?sort_key=id&sort_dir=asc&limit=3&marker=5d58b583-5d69-4ece-8d55-e92a2110bd6a"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_doesnt_contain_id [0.072648s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {'foo': 123}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '19a00ee0-c872-49b4-b7bc-5acc45cdae5c', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/19a00ee0-c872-49b4-b7bc-5acc45cdae5c Openstack-Request-Id: req-8254f063-aa07-4ec1-83f6-71f9d61be4cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "19a00ee0-c872-49b4-b7bc-5acc45cdae5c", "created_at": "2026-04-12T07:46:35.298662+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/19a00ee0-c872-49b4-b7bc-5acc45cdae5c", "rel": "self"}, {"href": "http://localhost/allocations/19a00ee0-c872-49b4-b7bc-5acc45cdae5c", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/19a00ee0-c872-49b4-b7bc-5acc45cdae5c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aa55b8d1-e527-4332-9f1e-07d90272d17a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "19a00ee0-c872-49b4-b7bc-5acc45cdae5c", "created_at": "2026-04-12T07:46:35.298662+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/19a00ee0-c872-49b4-b7bc-5acc45cdae5c", "rel": "self"}, {"href": "http://localhost/allocations/19a00ee0-c872-49b4-b7bc-5acc45cdae5c", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis [0.942398s] ... 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-8a74dc00-66d8-403b-b281-862adbee1e89 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-26003846-802d-45bb-9822-e7d6a961b34f 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"}]]} 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 {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_collection_links_custom_fields [0.102295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d4339708-c290-4678-9604-2423c0c0dc0d 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": "0b9b62d6-6af3-4601-adee-293461747b3b", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/0b9b62d6-6af3-4601-adee-293461747b3b", "rel": "self"}, {"href": "http://localhost/allocations/0b9b62d6-6af3-4601-adee-293461747b3b", "rel": "bookmark"}]}, {"uuid": "b85b08b1-c3af-478a-af77-0c5e53f6062f", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/b85b08b1-c3af-478a-af77-0c5e53f6062f", "rel": "self"}, {"href": "http://localhost/allocations/b85b08b1-c3af-478a-af77-0c5e53f6062f", "rel": "bookmark"}]}, {"uuid": "1b841c11-a044-4842-8a8f-dba0520e81b2", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/1b841c11-a044-4842-8a8f-dba0520e81b2", "rel": "self"}, {"href": "http://localhost/allocations/1b841c11-a044-4842-8a8f-dba0520e81b2", "rel": "bookmark"}]}], "next": "http://localhost/v1/allocations?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=1b841c11-a044-4842-8a8f-dba0520e81b2"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_error [0.053808s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'd43b87f1-d972-4077-affe-b4460f4f18df', 'owner': None} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-00aec51e-9262-4b1f-abea-a27ff04e75ab X-Openstack-Ironic-Api-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_collection_links_default_limit [0.041668s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8c64013b-7ea5-48df-a032-04fe148e1842 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": "07cbeaff-e9dc-4955-a021-d10768334f18", "created_at": "2026-04-12T07:46:35.398787+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/07cbeaff-e9dc-4955-a021-d10768334f18", "rel": "self"}, {"href": "http://localhost/allocations/07cbeaff-e9dc-4955-a021-d10768334f18", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "5932f628-fc44-4c7a-8bd8-b0f9edcf4b1c", "created_at": "2026-04-12T07:46:35.399829+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/5932f628-fc44-4c7a-8bd8-b0f9edcf4b1c", "rel": "self"}, {"href": "http://localhost/allocations/5932f628-fc44-4c7a-8bd8-b0f9edcf4b1c", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "3e2ef3e3-0748-4ecd-a2fb-6cdaa8d74571", "created_at": "2026-04-12T07:46:35.400959+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/3e2ef3e3-0748-4ecd-a2fb-6cdaa8d74571", "rel": "self"}, {"href": "http://localhost/allocations/3e2ef3e3-0748-4ecd-a2fb-6cdaa8d74571", "rel": "bookmark"}], "node_uuid": null}], "next": "http://localhost/v1/allocations?sort_key=id&sort_dir=asc&limit=3&marker=3e2ef3e3-0748-4ecd-a2fb-6cdaa8d74571"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_doesnt_contain_id [0.070115s] ... 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-7701a5cf-e6a8-4d8d-9e46-57084dd11c03 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": "2026-04-12T07:46:35.405639+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-afea183f-e921-406b-aa6a-f2373eac634c 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": "2026-04-12T07:46:35.405639+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_allocation.TestPost.test_create_allocation_generate_uuid [0.098469s] ... 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/2818d51c-c66d-43de-869f-c8eba0ada5f4 Openstack-Request-Id: req-5abbfd13-0aaa-4622-90a8-16c1812a0e4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2818d51c-c66d-43de-869f-c8eba0ada5f4", "created_at": "2026-04-12T07:46:35.442137+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/2818d51c-c66d-43de-869f-c8eba0ada5f4", "rel": "self"}, {"href": "http://localhost/allocations/2818d51c-c66d-43de-869f-c8eba0ada5f4", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/2818d51c-c66d-43de-869f-c8eba0ada5f4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a5f9027-b797-4217-af43-4d87213dfdb8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2818d51c-c66d-43de-869f-c8eba0ada5f4", "created_at": "2026-04-12T07:46:35.442137+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/2818d51c-c66d-43de-869f-c8eba0ada5f4", "rel": "self"}, {"href": "http://localhost/allocations/2818d51c-c66d-43de-869f-c8eba0ada5f4", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_error [0.061575s] ... 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-8c34ef40-3863-4c4e-8305-5754912386d5 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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_empty [0.091527s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3123624f-3c32-4b2e-a54b-2dd5cfd9ee1c 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_allocation.TestPost.test_create_allocation_invalid_api_version [0.102233s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '2b6cb281-7d73-4f53-a9c0-45cb365075b6', '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.TestPost.test_create_chassis_generate_uuid [0.095573s] ... 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/8ec8faae-8743-43dd-bee1-55bb2803ee9d Openstack-Request-Id: req-a58f119e-22ad-4a7a-92d0-489fbd848dbf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "8ec8faae-8743-43dd-bee1-55bb2803ee9d", "created_at": "2026-04-12T07:46:35.561200+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/8ec8faae-8743-43dd-bee1-55bb2803ee9d", "rel": "self"}, {"href": "http://localhost/chassis/8ec8faae-8743-43dd-bee1-55bb2803ee9d", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/8ec8faae-8743-43dd-bee1-55bb2803ee9d/nodes", "rel": "self"}, {"href": "http://localhost/chassis/8ec8faae-8743-43dd-bee1-55bb2803ee9d/nodes", "rel": "bookmark"}]]} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-af171353-e2a4-49c7-b847-1b448fbb444d 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": "8ec8faae-8743-43dd-bee1-55bb2803ee9d", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/8ec8faae-8743-43dd-bee1-55bb2803ee9d", "rel": "self"}, {"href": "http://localhost/chassis/8ec8faae-8743-43dd-bee1-55bb2803ee9d", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_name [0.104944s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?node=node-1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b048722f-075d-44dd-936e-78ef45e1e561 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": "179621ba-5f58-48cf-8749-4a4a42137b3e", "created_at": "2026-04-12T07:46:35.558803+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/179621ba-5f58-48cf-8749-4a4a42137b3e", "rel": "self"}, {"href": "http://localhost/allocations/179621ba-5f58-48cf-8749-4a4a42137b3e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "2122924a-5468-48eb-b07a-e8057c7a6450", "created_at": "2026-04-12T07:46:35.561247+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/2122924a-5468-48eb-b07a-e8057c7a6450", "rel": "self"}, {"href": "http://localhost/allocations/2122924a-5468-48eb-b07a-e8057c7a6450", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "8dd6d64e-3439-4f62-ad96-554efc5c63d6", "created_at": "2026-04-12T07:46:35.562074+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/8dd6d64e-3439-4f62-ad96-554efc5c63d6", "rel": "self"}, {"href": "http://localhost/allocations/8dd6d64e-3439-4f62-ad96-554efc5c63d6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_invalid_description [0.036633s] ... 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-7eac8c46-6425-40c2-8c43-2f03bad1f0c7 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}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_toolong_description [0.029651s] ... 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-7f2ad23d-46d1-413d-bff2-4da6059f138d 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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_node_uuid [0.041844s] ... 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-694d6b10-0d0f-4cf5-afa9-a3d808b70ab3 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": "cdedc841-be50-45e4-baa2-03c621392b71", "created_at": "2026-04-12T07:46:35.643473+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/cdedc841-be50-45e4-baa2-03c621392b71", "rel": "self"}, {"href": "http://localhost/allocations/cdedc841-be50-45e4-baa2-03c621392b71", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_candidate_node_format [0.112961s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': ['invalid-format'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '9c5bf2af-3a9f-4924-84ea-560e546e76a1', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b78b97f3-ce9b-4572-ba8d-607324d4ae4d X-Openstack-Ironic-Api-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_all_by_non_existing_node [0.042236s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?node=banana WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-03ad3123-6d8d-4e4c-8559-17f051b15c42 X-Openstack-Ironic-Api-Maximum-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}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_unicode_description [0.069720s] ... 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-14247073-6380-41d0-8f25-f191f3103fe1 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": "2026-04-12T07:46:35.710103+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-27f3a5cc-b85c-4753-9ec3-3828508becb7 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": "2026-04-12T07:46:35.710103+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"}]]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_owner [0.046174s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?owner=12345 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e66454c-1e9b-465d-b939-89f21b2faacc 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": "c14912cc-d522-43d0-9f82-ff4448cdd336", "created_at": "2026-04-12T07:46:35.739429+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/c14912cc-d522-43d0-9f82-ff4448cdd336", "rel": "self"}, {"href": "http://localhost/allocations/c14912cc-d522-43d0-9f82-ff4448cdd336", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "0506f858-1ae3-471e-9ed7-a81783032755", "created_at": "2026-04-12T07:46:35.740331+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/0506f858-1ae3-471e-9ed7-a81783032755", "rel": "self"}, {"href": "http://localhost/allocations/0506f858-1ae3-471e-9ed7-a81783032755", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "1e168554-00df-4d1c-8b34-c140653f4e87", "created_at": "2026-04-12T07:46:35.741161+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/1e168554-00df-4d1c-8b34-c140653f4e87", "rel": "self"}, {"href": "http://localhost/allocations/1e168554-00df-4d1c-8b34-c140653f4e87", "rel": "bookmark"}], "node_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_create_chassis_valid_extra [0.064287s] ... 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-289df5ed-d662-4fa9-a473-70f09d051309 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": "2026-04-12T07:46:35.779259+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-f1db4fb2-45c4-4558-aaca-9ca8d86a22a7 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": "2026-04-12T07:46:35.779259+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"}]]} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_invalid_trait [0.095844s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': ['CUSTOM_GPU', 'FOO_BAR'], 'uuid': 'daeb0aae-c495-4f70-b020-56a8452599e4', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5e389b93-6f52-4b5a-8897-c623d8205041 X-Openstack-Ironic-Api-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_all_by_owner_not_allowed [0.058501s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?owner=12345 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-41dab148-67b8-47a1-a1d5-893e58fdca32 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}"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_name_invalid [0.042089s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': 'aa:bb_cc', 'resource_class': 'baremetal', 'traits': [], 'uuid': '3dff1cb9-b645-4310-b7e3-1284b203f4d9', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-dac0f056-3527-48f0-9c6a-902346fcd526 X-Openstack-Ironic-Api-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_all_by_owner_not_allowed_mismatch [0.047375s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?owner=12345 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-99ba8977-5ff8-470d-92a9-34f364314f67 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}"} {2} ironic.tests.unit.api.controllers.v1.test_chassis.TestPost.test_post_nodes_subresource [0.083050s] ... 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-7cc6e0bd-154d-440d-bec7-abce551d9cf1 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_collection.TestCollection.test_get_next [0.048563s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_name_ok [0.109003s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': 'foo', 'resource_class': 'baremetal', 'traits': [], 'uuid': 'a8e23b2b-9532-43fd-95c5-fe6c53a33ecf', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/a8e23b2b-9532-43fd-95c5-fe6c53a33ecf Openstack-Request-Id: req-fa6ae757-ac76-431d-9e51-871aa1257eea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a8e23b2b-9532-43fd-95c5-fe6c53a33ecf", "created_at": "2026-04-12T07:46:35.923806+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/a8e23b2b-9532-43fd-95c5-fe6c53a33ecf", "rel": "self"}, {"href": "http://localhost/allocations/a8e23b2b-9532-43fd-95c5-fe6c53a33ecf", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/a8e23b2b-9532-43fd-95c5-fe6c53a33ecf WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-45a936b2-8f7a-4758-a41c-7829d32e2ff2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a8e23b2b-9532-43fd-95c5-fe6c53a33ecf", "created_at": "2026-04-12T07:46:35.923806+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/a8e23b2b-9532-43fd-95c5-fe6c53a33ecf", "rel": "self"}, {"href": "http://localhost/allocations/a8e23b2b-9532-43fd-95c5-fe6c53a33ecf", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_has_next [0.026023s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_collection.TestCollection.test_list_convert_with_links [0.018963s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_all_by_state [0.105444s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?state=allocating WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c6e3468c-9b53-47dd-866a-735b66535cbf 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": "b4f455cb-ea1d-483f-809f-45cc33c1b3c1", "created_at": "2026-04-12T07:46:35.951043+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/b4f455cb-ea1d-483f-809f-45cc33c1b3c1", "rel": "self"}, {"href": "http://localhost/allocations/b4f455cb-ea1d-483f-809f-45cc33c1b3c1", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "ec8526fd-0eb5-444b-baf3-8cab77b34bf7", "created_at": "2026-04-12T07:46:35.954428+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/ec8526fd-0eb5-444b-baf3-8cab77b34bf7", "rel": "self"}, {"href": "http://localhost/allocations/ec8526fd-0eb5-444b-baf3-8cab77b34bf7", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "d01ffa87-3643-4165-ad1e-b0bf43b07f04", "created_at": "2026-04-12T07:46:35.955343+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/d01ffa87-3643-4165-ad1e-b0bf43b07f04", "rel": "self"}, {"href": "http://localhost/allocations/d01ffa87-3643-4165-ad1e-b0bf43b07f04", "rel": "bookmark"}], "node_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_name [0.043862s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/CUSTOM_DT1 GOT Response: 204 No Content Openstack-Request-Id: req-e62593b5-bb1b-4a4f-952a-081170d9bbf1 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_allocation.TestListAllocations.test_get_by_node_resource [0.044306s] ... 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-e84af7a4-bf84-4a31-ad20-bef7a311ec0d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b9c640d0-96b5-4435-8fd7-e634529d465e", "created_at": "2026-04-12T07:46:36.006302+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/b9c640d0-96b5-4435-8fd7-e634529d465e", "rel": "self"}, {"href": "http://localhost/allocations/b9c640d0-96b5-4435-8fd7-e634529d465e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_no_mandatory_field_resource_class [0.096184s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'traits': [], 'uuid': 'f2fabdf1-3a3c-4b5e-a233-6516b76a06f3', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0c660836-9461-4b35-ba73-273109deb007 X-Openstack-Ironic-Api-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_deploy_template.TestDelete.test_delete_by_name_non_existent [0.044776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/blah GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d064e65f-3dba-40a6-9dc0-42658538b5c1 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_and_id [0.060071s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation/108c089b-be0f-4a36-9623-45a96da17466 WITH {} 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.TestDelete.test_delete_by_name_with_json [0.045347s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/CUSTOM_DT1.json GOT Response: 204 No Content Openstack-Request-Id: req-f1e0cde1-8a7c-4fd3-9e8a-0e36e1722d09 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_allocation.TestListAllocations.test_get_by_node_resource_invalid_api_version [0.037697s] ... 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_deploy_template.TestDelete.test_delete_by_name_with_json_not_found [0.045475s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/CUSTOM_DT1.json GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e63969d2-2fe1-4219-b2b2-d3c1e12f3184 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner [0.095722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'c260d0c7-ea3c-47ec-8eb8-bd4b38956ead', 'owner': '12345'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/c260d0c7-ea3c-47ec-8eb8-bd4b38956ead Openstack-Request-Id: req-a5e10a97-3e52-4b22-88bf-558f9a06818d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c260d0c7-ea3c-47ec-8eb8-bd4b38956ead", "created_at": "2026-04-12T07:46:36.138210+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/c260d0c7-ea3c-47ec-8eb8-bd4b38956ead", "rel": "self"}, {"href": "http://localhost/allocations/c260d0c7-ea3c-47ec-8eb8-bd4b38956ead", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/c260d0c7-ea3c-47ec-8eb8-bd4b38956ead WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a0b56ab6-a3dc-4df6-b0ca-8f94c6bddd46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c260d0c7-ea3c-47ec-8eb8-bd4b38956ead", "created_at": "2026-04-12T07:46:36.138210+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/c260d0c7-ea3c-47ec-8eb8-bd4b38956ead", "rel": "self"}, {"href": "http://localhost/allocations/c260d0c7-ea3c-47ec-8eb8-bd4b38956ead", "rel": "bookmark"}], "node_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_by_node_resource_with_fields [0.057696s] ... 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-f34a5fbc-0f95-4afd-a925-53bb61c14ae0 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/54ecccac-5b9d-4655-80a6-1a5fd1aa6ad4", "rel": "self"}, {"href": "http://localhost/allocations/54ecccac-5b9d-4655-80a6-1a5fd1aa6ad4", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid [0.061580s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/10f170d1-8284-4655-bc7c-0b3f2772035e GOT Response: 204 No Content Openstack-Request-Id: req-0798ad66-f40f-4342-af76-d3dba58d5c81 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_allocation.TestListAllocations.test_get_collection_custom_fields [0.066134s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7d9a1d50-77a5-4697-b25c-d0750cf09c07 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": "61ef876c-f308-401f-9280-682b8fe60d4f", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/61ef876c-f308-401f-9280-682b8fe60d4f", "rel": "self"}, {"href": "http://localhost/allocations/61ef876c-f308-401f-9280-682b8fe60d4f", "rel": "bookmark"}]}, {"uuid": "43cb275a-6a25-4850-8e63-37f97754508f", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/43cb275a-6a25-4850-8e63-37f97754508f", "rel": "self"}, {"href": "http://localhost/allocations/43cb275a-6a25-4850-8e63-37f97754508f", "rel": "bookmark"}]}, {"uuid": "b1e22a0a-4e37-4842-a850-1e36f370bac5", "extra": {}, "links": [{"href": "http://localhost/v1/allocations/b1e22a0a-4e37-4842-a850-1e36f370bac5", "rel": "self"}, {"href": "http://localhost/allocations/b1e22a0a-4e37-4842-a850-1e36f370bac5", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_auto_filled [0.105591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '30ca2c82-8fd4-4b3e-ad04-07bc904b719b', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/30ca2c82-8fd4-4b3e-ad04-07bc904b719b Openstack-Request-Id: req-d698a4a5-d1d6-4f86-8394-803e9f1e58ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "30ca2c82-8fd4-4b3e-ad04-07bc904b719b", "created_at": "2026-04-12T07:46:36.247151+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/30ca2c82-8fd4-4b3e-ad04-07bc904b719b", "rel": "self"}, {"href": "http://localhost/allocations/30ca2c82-8fd4-4b3e-ad04-07bc904b719b", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/30ca2c82-8fd4-4b3e-ad04-07bc904b719b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-04cee104-97e0-4237-b5c6-454f03fb367a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "30ca2c82-8fd4-4b3e-ad04-07bc904b719b", "created_at": "2026-04-12T07:46:36.247151+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/30ca2c82-8fd4-4b3e-ad04-07bc904b719b", "rel": "self"}, {"href": "http://localhost/allocations/30ca2c82-8fd4-4b3e-ad04-07bc904b719b", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid_with_json [0.114647s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/7a927b6c-2eef-49ad-b43c-27939b150f6a.json GOT Response: 204 No Content Openstack-Request-Id: req-dbac2c66-1eac-4333-9156-08dcc8846644 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_allocation.TestListAllocations.test_get_collection_pagination_no_uuid [0.099169s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?fields=node_uuid&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1a962fbb-02a9-4984-83da-e7fc8896a8af 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/e348c678-8865-4471-ae3e-149798614312", "rel": "self"}, {"href": "http://localhost/allocations/e348c678-8865-4471-ae3e-149798614312", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"links": [{"href": "http://localhost/v1/allocations/772541ba-4b9c-4879-895a-98692a03a76f", "rel": "self"}, {"href": "http://localhost/allocations/772541ba-4b9c-4879-895a-98692a03a76f", "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=772541ba-4b9c-4879-895a-98692a03a76f"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_by_uuid_with_json_not_found [0.092591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/9f8ea62f-9304-415f-b57e-8be3819f125a.json GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1d7f4a59-c9f5-4db6-b976-f428bbac86d8 X-Openstack-Ironic-Api-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 9f8ea62f-9304-415f-b57e-8be3819f125a.json could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_allowed [0.171821s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'b185fcfe-f043-4856-aeec-1b9e04de33fd', 'owner': '12345'} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-828cfd99-34bf-416c-aa70-b3b4ad0a1e5c 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}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestDelete.test_delete_invalid_api_version [0.034903s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/a4ce9486-17d7-4654-8746-e3e89afdde42 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.TestDelete.test_delete_old_api_version [0.031293s] ... 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\"}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_custom_fields_invalid_fields [0.156517s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/274f3a0d-d333-4cd1-8bbe-857ae1d6fe44?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-81311188-0f3b-415b-b0d7-80967e7475eb X-Openstack-Ironic-Api-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 [0.061600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '382ff947-387e-40c6-b4dd-9125d635dcfb', '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/382ff947-387e-40c6-b4dd-9125d635dcfb Openstack-Request-Id: req-48e8f9bb-61db-435b-bf6f-3806fc9bbf13 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "382ff947-387e-40c6-b4dd-9125d635dcfb", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/382ff947-387e-40c6-b4dd-9125d635dcfb", "rel": "self"}, {"href": "http://localhost/deploy_templates/382ff947-387e-40c6-b4dd-9125d635dcfb", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /v1/deploy_templates/382ff947-387e-40c6-b4dd-9125d635dcfb WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b0c66050-8928-4ed0-8794-239c68b6ace0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "382ff947-387e-40c6-b4dd-9125d635dcfb", "created_at": "2000-01-01T00:00:00+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/382ff947-387e-40c6-b4dd-9125d635dcfb", "rel": "self"}, {"href": "http://localhost/deploy_templates/382ff947-387e-40c6-b4dd-9125d635dcfb", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_owner_not_my_projet_id [0.138140s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'aa20d90f-b44d-4396-bc61-cfe9b43ccf28', 'owner': '12345'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5c601ccb-cb62-42d8-baf2-c3b5a32d2bed X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_complex_step_args [0.037707s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '34fb8dea-8db7-42f2-8771-7460c55f4e8f', '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/34fb8dea-8db7-42f2-8771-7460c55f4e8f Openstack-Request-Id: req-36353432-1c62-4136-870e-7a52c001c6e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "34fb8dea-8db7-42f2-8771-7460c55f4e8f", "created_at": "2026-04-12T07:46:36.596624+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/34fb8dea-8db7-42f2-8771-7460c55f4e8f", "rel": "self"}, {"href": "http://localhost/deploy_templates/34fb8dea-8db7-42f2-8771-7460c55f4e8f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"foo": [{"bar": "baz"}]}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one [0.094846s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/e4533c7d-c2c7-4153-9fb9-783c3e36f5a2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a64f3934-c7c9-4fd5-8c3c-a2dd886ee1a8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e4533c7d-c2c7-4153-9fb9-783c3e36f5a2", "created_at": "2026-04-12T07:46:36.593546+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/e4533c7d-c2c7-4153-9fb9-783c3e36f5a2", "rel": "self"}, {"href": "http://localhost/allocations/e4533c7d-c2c7-4153-9fb9-783c3e36f5a2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_doesnt_contain_id [0.058811s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '69d1d2d6-53bd-4003-906d-74bee5e6861e', '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/69d1d2d6-53bd-4003-906d-74bee5e6861e Openstack-Request-Id: req-90ca2c40-94c3-453e-bc72-44f63676e6ad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "69d1d2d6-53bd-4003-906d-74bee5e6861e", "created_at": "2026-04-12T07:46:36.636201+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/69d1d2d6-53bd-4003-906d-74bee5e6861e", "rel": "self"}, {"href": "http://localhost/deploy_templates/69d1d2d6-53bd-4003-906d-74bee5e6861e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /v1/deploy_templates/69d1d2d6-53bd-4003-906d-74bee5e6861e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-854028e2-cfed-42f4-8cc9-d7b2846dd572 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "69d1d2d6-53bd-4003-906d-74bee5e6861e", "created_at": "2026-04-12T07:46:36.636201+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/69d1d2d6-53bd-4003-906d-74bee5e6861e", "rel": "self"}, {"href": "http://localhost/deploy_templates/69d1d2d6-53bd-4003-906d-74bee5e6861e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_resource_class_too_long [0.090598s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'traits': [], 'uuid': 'a7dc94aa-3aed-425f-94a4-f91c8e2b0084', 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e636cf66-8a5f-49a1-b280-0c414f49ac35 X-Openstack-Ironic-Api-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_custom_fields [0.097335s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/93fecb82-c7ae-4b98-ba39-ac9d9a7ddf73?fields=resource_class,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5c5c87f6-bfbe-4977-9f47-786f41a59270 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/93fecb82-c7ae-4b98-ba39-ac9d9a7ddf73", "rel": "self"}, {"href": "http://localhost/allocations/93fecb82-c7ae-4b98-ba39-ac9d9a7ddf73", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_error [0.091446s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'afb09ea8-88dc-4c3a-ae91-6b4a12aa2e29', '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-0f746ea6-b651-47e6-b224-8261aab7337a X-Openstack-Ironic-Api-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_allocation.TestPost.test_create_allocation_valid_extra [0.112783s] ... 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': '7382d21b-1b8d-46fe-b580-652519072ba5', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/7382d21b-1b8d-46fe-b580-652519072ba5 Openstack-Request-Id: req-c40c8335-655c-4885-9e2d-2c02a5dfd930 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7382d21b-1b8d-46fe-b580-652519072ba5", "created_at": "2026-04-12T07:46:36.760386+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/7382d21b-1b8d-46fe-b580-652519072ba5", "rel": "self"}, {"href": "http://localhost/allocations/7382d21b-1b8d-46fe-b580-652519072ba5", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/7382d21b-1b8d-46fe-b580-652519072ba5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68d442b3-60f2-485d-99dd-224a9f64ed3e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7382d21b-1b8d-46fe-b580-652519072ba5", "created_at": "2026-04-12T07:46:36.760386+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/7382d21b-1b8d-46fe-b580-652519072ba5", "rel": "self"}, {"href": "http://localhost/allocations/7382d21b-1b8d-46fe-b580-652519072ba5", "rel": "bookmark"}], "node_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version [0.086601s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/5221d68b-0a8d-4602-a927-55bc95ce9234 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\"}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_invalid_api_version_without_check [0.064349s] ... 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\"}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_generate_uuid [0.124663s] ... 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/45f8828c-a9cf-4861-97df-cdedbdb14bda Openstack-Request-Id: req-7b2f373a-662a-4223-ae71-d904cb0920df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "45f8828c-a9cf-4861-97df-cdedbdb14bda", "created_at": "2026-04-12T07:46:36.842132+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/45f8828c-a9cf-4861-97df-cdedbdb14bda", "rel": "self"}, {"href": "http://localhost/deploy_templates/45f8828c-a9cf-4861-97df-cdedbdb14bda", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /v1/deploy_templates/45f8828c-a9cf-4861-97df-cdedbdb14bda WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7f9c30cd-4f5f-45b0-a56d-921715e35b40 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "45f8828c-a9cf-4861-97df-cdedbdb14bda", "created_at": "2026-04-12T07:46:36.842132+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/45f8828c-a9cf-4861-97df-cdedbdb14bda", "rel": "self"}, {"href": "http://localhost/deploy_templates/45f8828c-a9cf-4861-97df-cdedbdb14bda", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_candidate_nodes [0.097266s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': ['node-1', 'e0dd7bd3-2794-4f96-b49f-d9852f8e9ac4'], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'a4944b88-e358-480d-9433-53e2dd6f1449', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/a4944b88-e358-480d-9433-53e2dd6f1449 Openstack-Request-Id: req-73e63b2e-8b48-44bf-8172-604e1031df70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a4944b88-e358-480d-9433-53e2dd6f1449", "created_at": "2026-04-12T07:46:36.860610+00:00", "updated_at": null, "candidate_nodes": ["1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "e0dd7bd3-2794-4f96-b49f-d9852f8e9ac4"], "extra": {}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/a4944b88-e358-480d-9433-53e2dd6f1449", "rel": "self"}, {"href": "http://localhost/allocations/a4944b88-e358-480d-9433-53e2dd6f1449", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/a4944b88-e358-480d-9433-53e2dd6f1449 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-00601384-d7c9-44fc-b5ca-3177cf76488b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a4944b88-e358-480d-9433-53e2dd6f1449", "created_at": "2026-04-12T07:46:36.860610+00:00", "updated_at": null, "candidate_nodes": ["1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "e0dd7bd3-2794-4f96-b49f-d9852f8e9ac4"], "extra": {}, "last_error": null, "name": null, "owner": "0987", "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/a4944b88-e358-480d-9433-53e2dd6f1449", "rel": "self"}, {"href": "http://localhost/allocations/a4944b88-e358-480d-9433-53e2dd6f1449", "rel": "bookmark"}], "node_uuid": null} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_double_json_in_name [0.057522s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/80734da1-ef75-4bec-8ed3-0b5bc37f0455 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-49e58fbf-c832-45d4-b094-5f451fb18e6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "80734da1-ef75-4bec-8ed3-0b5bc37f0455", "created_at": "2026-04-12T07:46:36.899646+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/80734da1-ef75-4bec-8ed3-0b5bc37f0455", "rel": "self"}, {"href": "http://localhost/allocations/80734da1-ef75-4bec-8ed3-0b5bc37f0455", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_api_version [0.049859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '92b242d8-77a7-4af1-aee4-a2065622524a', '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\"}"} {0} ironic.tests.unit.api.controllers.test_base.TestBase.test_api_setup [0.592572s] ... 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 {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_no_extra [0.084336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'ff743919-2ca9-4e83-80ec-f2c34621b893', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/ff743919-2ca9-4e83-80ec-f2c34621b893 Openstack-Request-Id: req-5ef8f637-5c43-495e-af55-b3f94545bc7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ff743919-2ca9-4e83-80ec-f2c34621b893", "created_at": "2026-04-12T07:46:36.943820+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/ff743919-2ca9-4e83-80ec-f2c34621b893", "rel": "self"}, {"href": "http://localhost/allocations/ff743919-2ca9-4e83-80ec-f2c34621b893", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_empty_steps [0.043887s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '78889ca2-2a8c-4ce5-8cf4-0d90e4cc2441', 'steps': [], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-17425ae6-17f3-4193-8e45-bce44b9bb7e0 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json [0.080420s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/6ee36db7-87ad-4053-931e-f848d2227d17.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2aebd21-2ddb-49ab-afab-3851e8bbc088 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "6ee36db7-87ad-4053-931e-f848d2227d17", "created_at": "2026-04-12T07:46:36.994904+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/6ee36db7-87ad-4053-931e-f848d2227d17", "rel": "self"}, {"href": "http://localhost/allocations/6ee36db7-87ad-4053-931e-f848d2227d17", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.test_base.TestBase.test_bad_uri [0.069199s] ... 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_deploy_template.TestPost.test_create_invalid_field_extra [0.067319s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '6aece55c-1e59-4afc-bea9-5700f9a193d5', '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-09a7c9f9-cd52-4661-b04d-af863dd447ed X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json_in_name [0.047594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/e678fdae-28aa-4201-b5c3-a0e214e1fafc WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-688678d4-bd18-42cb-b1ec-091411557339 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e678fdae-28aa-4201-b5c3-a0e214e1fafc", "created_at": "2026-04-12T07:46:37.039545+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/e678fdae-28aa-4201-b5c3-a0e214e1fafc", "rel": "self"}, {"href": "http://localhost/allocations/e678fdae-28aa-4201-b5c3-a0e214e1fafc", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_equals [0.045258s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_foo [0.047173s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '4e51e0c7-4ada-47c3-91c6-58def79b5236', '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-c3fb530a-0b38-4c17-98ba-7976302b7343 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_one_with_json_not_found [0.056183s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/3314d185-15b5-4a54-a7cd-96cab834ec7d.json WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-42e8b7bf-35b5-44cf-be1e-2a26d27d2f71 X-Openstack-Ironic-Api-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 3314d185-15b5-4a54-a7cd-96cab834ec7d.json could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_allocation_with_traits [0.160275s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': ['CUSTOM_GPU', 'CUSTOM_FOO_BAR'], 'uuid': '93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7 Openstack-Request-Id: req-ffd3197a-40b0-45a1-809e-0c6a721f137d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7", "created_at": "2026-04-12T07:46:37.095187+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/93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7", "rel": "self"}, {"href": "http://localhost/allocations/93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-efa20533-ab8c-4d35-9195-c795e63a6bcf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7", "created_at": "2026-04-12T07:46:37.095187+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/93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7", "rel": "self"}, {"href": "http://localhost/allocations/93d8f8ff-3ca9-4aee-91b1-3846ff7ae0a7", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name [0.050501s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 42, 'uuid': '90fc18df-f69d-41f2-825b-ff17e114dd6d', '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-6dfb3f55-7ab2-4665-83d1-731918bbffd0 X-Openstack-Ironic-Api-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_allocation.TestListAllocations.test_get_one_with_suffix [0.040947s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/d985cebb-13fa-4d4f-8e3f-aa1d38eddaa2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-81222134-24e1-4520-ae15-f1561b88be13 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d985cebb-13fa-4d4f-8e3f-aa1d38eddaa2", "created_at": "2026-04-12T07:46:37.143699+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/d985cebb-13fa-4d4f-8e3f-aa1d38eddaa2", "rel": "self"}, {"href": "http://localhost/allocations/d985cebb-13fa-4d4f-8e3f-aa1d38eddaa2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_greaterthan [0.091345s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_name_none [0.038285s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': None, 'uuid': 'c9035405-0630-4c54-8897-30b5d912773d', '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-7dd7d05d-d308-4792-b06a-54f733ef5b81 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_init [0.037261s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_get_owner_field [0.061115s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/e7965ea2-9914-4420-b356-ef9de4b4bb37?fields=owner WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1edbad73-86f0-43a4-b9f0-15deae12233f 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/e7965ea2-9914-4420-b356-ef9de4b4bb37", "rel": "self"}, {"href": "http://localhost/allocations/e7965ea2-9914-4420-b356-ef9de4b4bb37", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_lessthan [0.025312s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_field_steps [0.052692s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '69f637e6-5f34-452d-921f-4ccf44092339', 'steps': {}, 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a53d98be-0f04-4168-9327-194a96501f1d X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_not_equals [0.044277s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args1 [0.042866s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'ad34fdaa-649c-4ea3-bd40-d62069202a4b', '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-058d8ddb-366f-4fa2-82f6-b9d7d9f83925 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_by_node_not_allowed [0.151462s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'c185dedb-5016-4fa0-89b1-efc4f9ba34c1', 'owner': None} GOT Response: 405 Method Not Allowed Allow: DELETE, GET Content-Type: application/json {"error_message": "{\"code\": 405, \"title\": \"Method Not Allowed\", \"description\": \"\"}"} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_bad_length [0.040861s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_args2 [0.042613s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'bcdad4ca-59c3-4c0b-a0da-0f6eea3ba32a', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': [], 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1023cb9b-d2ec-4d02-b7cd-f76521ae9b49 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_links [0.104508s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/46e73cd8-99ac-4ecc-a335-87780211a804 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0ffd95bb-d637-49de-8fc2-031f80f12609 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "46e73cd8-99ac-4ecc-a335-87780211a804", "created_at": "2026-04-12T07:46:37.260501+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/46e73cd8-99ac-4ecc-a335-87780211a804", "rel": "self"}, {"href": "http://localhost/allocations/46e73cd8-99ac-4ecc-a335-87780211a804", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/allocations/46e73cd8-99ac-4ecc-a335-87780211a804 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93f7671a-d188-40a0-a579-bee2ff22ca78 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "46e73cd8-99ac-4ecc-a335-87780211a804", "created_at": "2026-04-12T07:46:37.260501+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/46e73cd8-99ac-4ecc-a335-87780211a804", "rel": "self"}, {"href": "http://localhost/allocations/46e73cd8-99ac-4ecc-a335-87780211a804", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /allocations/46e73cd8-99ac-4ecc-a335-87780211a804 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-71c0aab1-4289-4b05-948c-927bc101c397 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "46e73cd8-99ac-4ecc-a335-87780211a804", "created_at": "2026-04-12T07:46:37.260501+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/46e73cd8-99ac-4ecc-a335-87780211a804", "rel": "self"}, {"href": "http://localhost/allocations/46e73cd8-99ac-4ecc-a335-87780211a804", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_node_uuid_not_allowed [0.057276s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '21e97f61-a96f-4191-a084-cf5d49649cc9', 'owner': None, 'node_uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ea34a5cf-b57e-4022-b7e2-70f65cdfa10e X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_headers_latest [0.041693s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_foo [0.048222s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'ccd2d864-d87e-476b-8945-fa3e896d2ddd', '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-afe79ae1-4c9f-4b34-96e4-4dff78c1f8cd X-Openstack-Ironic-Api-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.test_base.TestVersion.test_parse_headers_ok [0.034735s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface1 [0.059561s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'a94fa475-599f-46f3-a770-bc116a79a51f', '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-6c11e2c6-2eec-4270-917b-7a32627c2b37 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_deprecated_without_owner [0.108438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '085ea238-2b8e-4094-8669-7967c0657aec', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/085ea238-2b8e-4094-8669-7967c0657aec Openstack-Request-Id: req-8f53613b-1a33-4188-9740-0a360d181b9d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "085ea238-2b8e-4094-8669-7967c0657aec", "created_at": "2026-04-12T07:46:37.431849+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/085ea238-2b8e-4094-8669-7967c0657aec", "rel": "self"}, {"href": "http://localhost/allocations/085ea238-2b8e-4094-8669-7967c0657aec", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/085ea238-2b8e-4094-8669-7967c0657aec WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f6ef0ada-81bd-423d-93cc-f9e86abbb244 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "085ea238-2b8e-4094-8669-7967c0657aec", "created_at": "2026-04-12T07:46:37.431849+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/085ea238-2b8e-4094-8669-7967c0657aec", "rel": "self"}, {"href": "http://localhost/allocations/085ea238-2b8e-4094-8669-7967c0657aec", "rel": "bookmark"}], "node_uuid": null} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_new_standard_singular_header_ok [0.088361s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_interface2 [0.069082s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '78d0125d-322e-42d6-9a72-29c13d4b2051', '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-b98f5e85-cc84-4f49-8b67-f2ae3bdc48f7 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_many [0.208070s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-720dbfb9-785c-4569-855d-277ae2572cbd 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": "144f76ec-d48b-4706-939f-cbe98f53aff2", "created_at": "2026-04-12T07:46:37.443725+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/144f76ec-d48b-4706-939f-cbe98f53aff2", "rel": "self"}, {"href": "http://localhost/allocations/144f76ec-d48b-4706-939f-cbe98f53aff2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "8afd8045-511c-4798-8c4d-d96ed0cc1b8f", "created_at": "2026-04-12T07:46:37.446019+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/8afd8045-511c-4798-8c4d-d96ed0cc1b8f", "rel": "self"}, {"href": "http://localhost/allocations/8afd8045-511c-4798-8c4d-d96ed0cc1b8f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "8f059047-96a7-4c76-b034-799ec9bec924", "created_at": "2026-04-12T07:46:37.450686+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/8f059047-96a7-4c76-b034-799ec9bec924", "rel": "self"}, {"href": "http://localhost/allocations/8f059047-96a7-4c76-b034-799ec9bec924", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "28732048-3fae-40fc-a137-6a6ff240cea2", "created_at": "2026-04-12T07:46:37.453154+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/28732048-3fae-40fc-a137-6a6ff240cea2", "rel": "self"}, {"href": "http://localhost/allocations/28732048-3fae-40fc-a137-6a6ff240cea2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "fbc4df6a-3f5c-410e-8589-f9eb8a0497fa", "created_at": "2026-04-12T07:46:37.459504+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/fbc4df6a-3f5c-410e-8589-f9eb8a0497fa", "rel": "self"}, {"href": "http://localhost/allocations/fbc4df6a-3f5c-410e-8589-f9eb8a0497fa", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_parse_no_header [0.077513s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_forbidden [0.133622s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'ef798280-cfa7-4858-92fd-dd89fc99be65', 'owner': None} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b30442b7-4106-4195-b434-188c2573e8d2 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_negative_priority [0.099757s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'd78361f3-fcbf-4c74-8d9a-e1abe556f609', '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-fe74d8ab-2f55-4671-a699-ab304bd1e333 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_repr [0.058057s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_one [0.099155s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-eb00567d-3762-4ca0-9703-f594ff26f6e6 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": "a7ac1397-1e33-4c7d-a794-bfd71762cc2e", "created_at": "2026-04-12T07:46:37.611089+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/a7ac1397-1e33-4c7d-a794-bfd71762cc2e", "rel": "self"}, {"href": "http://localhost/allocations/a7ac1397-1e33-4c7d-a794-bfd71762cc2e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_priority [0.038749s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '00a42851-1549-4157-b498-2d20fb098785', '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-7fe58d1c-61cc-4e5a-9f48-d092acba624e X-Openstack-Ironic-Api-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_allocation.TestPost.test_create_restricted_allocation_normal [0.080331s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '1e96c529-ca16-4758-9fe2-f6a3318ce5a1', 'owner': None} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/1e96c529-ca16-4758-9fe2-f6a3318ce5a1 Openstack-Request-Id: req-7b8de16e-bc18-4955-ae07-6d868ef80c76 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "1e96c529-ca16-4758-9fe2-f6a3318ce5a1", "created_at": "2026-04-12T07:46:37.662773+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/1e96c529-ca16-4758-9fe2-f6a3318ce5a1", "rel": "self"}, {"href": "http://localhost/allocations/1e96c529-ca16-4758-9fe2-f6a3318ce5a1", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/1e96c529-ca16-4758-9fe2-f6a3318ce5a1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-af854b3d-112a-4d2d-b3ec-952ea8a1657b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "1e96c529-ca16-4758-9fe2-f6a3318ce5a1", "created_at": "2026-04-12T07:46:37.662773+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/1e96c529-ca16-4758-9fe2-f6a3318ce5a1", "rel": "self"}, {"href": "http://localhost/allocations/1e96c529-ca16-4758-9fe2-f6a3318ce5a1", "rel": "bookmark"}], "node_uuid": null} {0} ironic.tests.unit.api.controllers.test_base.TestVersion.test_repr_with_strings [0.054835s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_invalid_step_field_step [0.059444s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '2f053036-e878-4395-992f-dfdfa641de36', 'steps': [{'interface': 'raid', 'step': 42, 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-73462842-d698-4862-9ffe-fcfb256b30ba X-Openstack-Ironic-Api-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_allocation.TestListAllocations.test_sort_key [0.088826s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3578aa42-96c8-426a-a4f6-65913a727743 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": "1174286b-b911-4ce1-9f9f-629f493a317c", "created_at": "2026-04-12T07:46:37.702065+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/1174286b-b911-4ce1-9f9f-629f493a317c", "rel": "self"}, {"href": "http://localhost/allocations/1174286b-b911-4ce1-9f9f-629f493a317c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "2aee92d9-6969-4b24-97ff-2850251a7885", "created_at": "2026-04-12T07:46:37.698716+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/2aee92d9-6969-4b24-97ff-2850251a7885", "rel": "self"}, {"href": "http://localhost/allocations/2aee92d9-6969-4b24-97ff-2850251a7885", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "3f96a3ef-a684-4068-819a-948f4d8117ac", "created_at": "2026-04-12T07:46:37.699627+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/3f96a3ef-a684-4068-819a-948f4d8117ac", "rel": "self"}, {"href": "http://localhost/allocations/3f96a3ef-a684-4068-819a-948f4d8117ac", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_older_version [0.063192s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '890ccede-338a-471c-b0bd-6561ba05dfb9'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/890ccede-338a-471c-b0bd-6561ba05dfb9 Openstack-Request-Id: req-586b5dae-4441-4778-a994-a99bc9508987 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"uuid": "890ccede-338a-471c-b0bd-6561ba05dfb9", "created_at": "2026-04-12T07:46:37.728076+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/890ccede-338a-471c-b0bd-6561ba05dfb9", "rel": "self"}, {"href": "http://localhost/allocations/890ccede-338a-471c-b0bd-6561ba05dfb9", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/890ccede-338a-471c-b0bd-6561ba05dfb9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a869c67-9cdb-4417-ae44-bb936436d2db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.59 {"uuid": "890ccede-338a-471c-b0bd-6561ba05dfb9", "created_at": "2026-04-12T07:46:37.728076+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/890ccede-338a-471c-b0bd-6561ba05dfb9", "rel": "self"}, {"href": "http://localhost/allocations/890ccede-338a-471c-b0bd-6561ba05dfb9", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.v1.test_allocation.TestPost.test_create_restricted_allocation_with_mismatch_owner [0.041426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': 'aa5ba74f-14fb-4fcb-b21d-2ad33c83754d', 'owner': '54321'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fb322292-2857-423e-9a4a-11b29efd8b48 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}"} {3} ironic.tests.unit.api.controllers.v1.test_allocation.TestListAllocations.test_sort_key_allowed [0.059392s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?sort_key=name WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fdb20d7c-656a-4076-a6b7-63e946545451 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": "61f88ec3-9c24-47fc-ad0b-3a5f5d603e97", "created_at": "2026-04-12T07:46:37.775558+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/61f88ec3-9c24-47fc-ad0b-3a5f5d603e97", "rel": "self"}, {"href": "http://localhost/allocations/61f88ec3-9c24-47fc-ad0b-3a5f5d603e97", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "11a61fce-9b08-49cf-9feb-4697726a6a47", "created_at": "2026-04-12T07:46:37.774690+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/11a61fce-9b08-49cf-9feb-4697726a6a47", "rel": "self"}, {"href": "http://localhost/allocations/11a61fce-9b08-49cf-9feb-4697726a6a47", "rel": "bookmark"}], "node_uuid": null}, {"uuid": "2a1f7db0-3fc2-45b9-9105-a459bd7bec4a", "created_at": "2026-04-12T07:46:37.773683+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/2a1f7db0-3fc2-45b9-9105-a459bd7bec4a", "rel": "self"}, {"href": "http://localhost/allocations/2a1f7db0-3fc2-45b9-9105-a459bd7bec4a", "rel": "bookmark"}], "node_uuid": null}]} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_long_name [0.088263s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': 'aaa9384d-e26c-4aa9-aa86-02dd9d8bf085', '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/aaa9384d-e26c-4aa9-aa86-02dd9d8bf085 Openstack-Request-Id: req-68818996-8d98-48bb-b3ec-d982665910df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "aaa9384d-e26c-4aa9-aa86-02dd9d8bf085", "created_at": "2026-04-12T07:46:37.785526+00:00", "updated_at": null, "name": "CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/aaa9384d-e26c-4aa9-aa86-02dd9d8bf085", "rel": "self"}, {"href": "http://localhost/deploy_templates/aaa9384d-e26c-4aa9-aa86-02dd9d8bf085", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_id [0.115406s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/a99a0e02-782c-4b74-986a-d29f49a4d4d4 GOT Response: 204 No Content Openstack-Request-Id: req-c592d3b8-9967-49e0-8cfb-be7146e25611 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_allocation.TestPost.test_create_restricted_allocation_with_owner [0.058789s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'candidate_nodes': [], 'extra': {}, 'name': None, 'resource_class': 'baremetal', 'traits': [], 'uuid': '3cdc83e7-0d61-4135-9d40-2d7ea4b881aa', 'owner': '12345'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/allocations/3cdc83e7-0d61-4135-9d40-2d7ea4b881aa Openstack-Request-Id: req-e3e971bd-c0a5-4bfc-9eda-28a86792d5d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "3cdc83e7-0d61-4135-9d40-2d7ea4b881aa", "created_at": "2026-04-12T07:46:37.829583+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/3cdc83e7-0d61-4135-9d40-2d7ea4b881aa", "rel": "self"}, {"href": "http://localhost/allocations/3cdc83e7-0d61-4135-9d40-2d7ea4b881aa", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/3cdc83e7-0d61-4135-9d40-2d7ea4b881aa WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f7155d26-5e23-4c1f-bf09-c045c4a1601e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.60 {"uuid": "3cdc83e7-0d61-4135-9d40-2d7ea4b881aa", "created_at": "2026-04-12T07:46:37.829583+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/3cdc83e7-0d61-4135-9d40-2d7ea4b881aa", "rel": "self"}, {"href": "http://localhost/allocations/3cdc83e7-0d61-4135-9d40-2d7ea4b881aa", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_not_a_trait [0.066405s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'not-a-trait', 'uuid': 'dded8a1d-e86c-4848-be4c-690df124282e', '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-429688d0-1e4f-4785-a93e-7e48b885f4d0 X-Openstack-Ironic-Api-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_allocation.TestListAllocations.test_sort_key_invalid [0.079672s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-abdf1557-9042-43f8-aa59-3eb01b50d1d1 X-Openstack-Ironic-Api-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-69a267b2-81d5-459d-82fa-83d6f8ca3356 X-Openstack-Ironic-Api-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-0938535d-9d3a-40bd-ad3a-6bd6ea8d8ea5 X-Openstack-Ironic-Api-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-f0de4e34-ece2-4eb3-90fd-fc600276a179 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_driver.TestDriverProperties.test_driver_properties_cached [0.074061s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/manual-management/properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-506f08c9-f9a5-452e-bfcd-2ffb143d1ad2 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-b96c78f1-855e-4a52-b6da-fdd45e014e82 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-54dc0805-6c0f-429d-a3f6-827fd9ebb760 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."} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name [0.097303s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/alloc1 GOT Response: 204 No Content Openstack-Request-Id: req-e8556c49-a19f-459f-bb21-d9805451a415 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_driver.TestDriverProperties.test_driver_properties_cannot_load [0.051055s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/driver/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bbf7090a-506b-4b6a-b676-1b26e3155d61 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}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_name_invalid_too_long [0.129162s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': '6e78047d-0d39-4c9c-b984-c1f1b878a390', '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-288c7316-c5c4-413d-accf-0be95ff18c10 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_name_not_existed [0.087180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/blah GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3c01e441-e885-48eb-874c-69112e3f1d23 X-Openstack-Ironic-Api-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.v1.test_driver.TestDriverProperties.test_driver_properties_fake [0.045450s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/test/properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8f1eabe7-6e21-43c6-801d-14a67dd93d01 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_driver.TestDriverProperties.test_driver_properties_hw_type [0.046659s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/manual-management/properties WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-95bec91f-9b45-40ec-b891-087eeeb00749 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."} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_field_name [0.089384s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'uuid': '2477360f-a949-4a52-850c-34ed4097ca81', '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-2783c684-899c-491d-a1f4-5c98735a243a X-Openstack-Ironic-Api-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_allocation.TestDelete.test_delete_allocation_by_name_with_json [0.075199s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/alloc1.json GOT Response: 204 No Content Openstack-Request-Id: req-2c2b85e5-ac7d-4ed8-ab79-0441f1474b5a 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_driver.TestDriverProperties.test_driver_properties_invalid_driver_name [0.053919s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/bad_driver/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3898e716-e3de-4bb3-ad1a-be869f114066 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}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_field_steps [0.088886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '1ae3a254-4609-4f6c-b3f4-0e50e752b7a7', 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-08f4eb3b-a8fc-465c-afb0-fc983241887c X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events [0.050362s] ... 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-ac8aebe8-ff6a-4229-ad5a-7015b52f04b4 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_allocation.TestDelete.test_delete_allocation_by_name_with_json_not_found [0.098114s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/alloc1.json GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9da5b3ac-eda9-490d-a826-52a1f9d66e57 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_does_not_contain_event [0.047239s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'INVALID': 'fake.event'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e004853a-d648-4fd6-bc00-cbda0de2f6cf X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_args [0.060455s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'ff7d9b83-2e64-4bc2-a1d7-ec1ca739a076', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5cb3e9a8-f95e-413f-9881-6a3888bad234 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node [0.079291s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/allocation GOT Response: 204 No Content Openstack-Request-Id: req-46e65049-8df1-4e47-9c11-5adefcbfd77b 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_deploy_template.TestPost.test_create_no_mandatory_step_field_interface [0.051911s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'ec1bec6f-9a14-4c95-a9f5-e6f2d2e67c61', 'steps': [{'step': 'create_configuration', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-931c1a08-f130-4f68-9a77-5afdf47b2faa X-Openstack-Ironic-Api-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_chassis.TestListChassis.test_collection_links [0.427030s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c6980508-2a6b-42b4-b06a-82ccc37071b0 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": "425c1f0f-5b64-4514-9137-8b639b0a6836", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/425c1f0f-5b64-4514-9137-8b639b0a6836", "rel": "self"}, {"href": "http://localhost/chassis/425c1f0f-5b64-4514-9137-8b639b0a6836", "rel": "bookmark"}]}, {"uuid": "4855f77c-6707-48e4-881a-eea43832217b", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/4855f77c-6707-48e4-881a-eea43832217b", "rel": "self"}, {"href": "http://localhost/chassis/4855f77c-6707-48e4-881a-eea43832217b", "rel": "bookmark"}]}, {"uuid": "4fcf750d-fbfd-4140-9f69-1b04d73bbf90", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/4fcf750d-fbfd-4140-9f69-1b04d73bbf90", "rel": "self"}, {"href": "http://localhost/chassis/4fcf750d-fbfd-4140-9f69-1b04d73bbf90", "rel": "bookmark"}]}], "next": "http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=uuid,description&limit=3&marker=4fcf750d-fbfd-4140-9f69-1b04d73bbf90"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_priority [0.036875s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'd4479712-411f-4e23-b38f-87c683eddee8', 'steps': [{'interface': 'raid', 'step': 'create_configuration', 'args': {'logical_disks': []}}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-41f70740-23c9-48b2-b37a-dfc5f7e5242f X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_invalid_api_version [0.057595s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_no_mandatory_step_field_step [0.039232s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': '006390ce-b701-4e3d-bf73-d6fba081df1e', 'steps': [{'interface': 'raid', 'args': {'logical_disks': []}, 'priority': 10}], 'extra': {}} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b06f2443-f75f-49ee-aa0e-18eb1a58fb89 X-Openstack-Ironic-Api-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_chassis.TestListChassis.test_collection_links_custom_fields [0.068756s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?fields=extra,uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a217d976-8858-4e45-96d4-e5b3e08fba10 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": "e134613c-5478-4d71-abb4-dd5d93eeabc2", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/e134613c-5478-4d71-abb4-dd5d93eeabc2", "rel": "self"}, {"href": "http://localhost/chassis/e134613c-5478-4d71-abb4-dd5d93eeabc2", "rel": "bookmark"}]}, {"uuid": "c328da62-a48b-4ea8-a55c-6ddcd54f3ebc", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/c328da62-a48b-4ea8-a55c-6ddcd54f3ebc", "rel": "self"}, {"href": "http://localhost/chassis/c328da62-a48b-4ea8-a55c-6ddcd54f3ebc", "rel": "bookmark"}]}, {"uuid": "eaf5ccf2-0799-49ab-91fb-a71f444fd02e", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/eaf5ccf2-0799-49ab-91fb-a71f444fd02e", "rel": "self"}, {"href": "http://localhost/chassis/eaf5ccf2-0799-49ab-91fb-a71f444fd02e", "rel": "bookmark"}]}], "next": "http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=extra,uuid&limit=3&marker=eaf5ccf2-0799-49ab-91fb-a71f444fd02e"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_by_node_not_existed [0.056551s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/07246817-861c-4cf2-a4ad-655565037a75/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c6266f2e-e261-444d-aee4-f424b8fcd903 X-Openstack-Ironic-Api-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 07246817-861c-4cf2-a4ad-655565037a75 was not found\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPost.test_create_standard_trait_name [0.050824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'HW_CPU_X86_VMX', 'uuid': '61e93cb1-b6d5-494e-8e94-f8698b1d4e71', '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/61e93cb1-b6d5-494e-8e94-f8698b1d4e71 Openstack-Request-Id: req-4d207d95-2542-4a45-8da3-e86be8ae6469 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "61e93cb1-b6d5-494e-8e94-f8698b1d4e71", "created_at": "2026-04-12T07:46:38.415404+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/61e93cb1-b6d5-494e-8e94-f8698b1d4e71", "rel": "self"}, {"href": "http://localhost/deploy_templates/61e93cb1-b6d5-494e-8e94-f8698b1d4e71", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_collection_links_default_limit [0.075182s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0f7e7c8a-af74-45bd-a510-ec2a65b67e2e 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": "2dc8e6a3-e2d1-409a-a767-df7c9f3e4610", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/2dc8e6a3-e2d1-409a-a767-df7c9f3e4610", "rel": "self"}, {"href": "http://localhost/chassis/2dc8e6a3-e2d1-409a-a767-df7c9f3e4610", "rel": "bookmark"}]}, {"uuid": "e859c9e7-7448-4ccc-bf1b-949ec2d4dc24", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/e859c9e7-7448-4ccc-bf1b-949ec2d4dc24", "rel": "self"}, {"href": "http://localhost/chassis/e859c9e7-7448-4ccc-bf1b-949ec2d4dc24", "rel": "bookmark"}]}, {"uuid": "4044bd7b-f74e-43fd-be16-83ec40a6ba9a", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/4044bd7b-f74e-43fd-be16-83ec40a6ba9a", "rel": "self"}, {"href": "http://localhost/chassis/4044bd7b-f74e-43fd-be16-83ec40a6ba9a", "rel": "bookmark"}]}], "next": "http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=uuid,description&limit=3&marker=4044bd7b-f74e-43fd-be16-83ec40a6ba9a"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version [0.063492s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/2db10671-954d-4e4d-bb04-b2012042181d 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_deploy_template.TestPost.test_create_step_string_priority [0.071530s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'b0bde3fb-d96b-479c-ab82-81c7a7094969', '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/b0bde3fb-d96b-479c-ab82-81c7a7094969 Openstack-Request-Id: req-b007d1f8-30a6-4542-948f-1047b8e72ea9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b0bde3fb-d96b-479c-ab82-81c7a7094969", "created_at": "2026-04-12T07:46:38.487761+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/b0bde3fb-d96b-479c-ab82-81c7a7094969", "rel": "self"}, {"href": "http://localhost/deploy_templates/b0bde3fb-d96b-479c-ab82-81c7a7094969", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": "42"}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestDelete.test_delete_allocation_invalid_api_version_without_check [0.038908s] ... 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_chassis.TestListChassis.test_detail [0.060646s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e358e325-9273-4b88-ac81-7152f73dd3d5 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": "2026-04-12T07:46:38.484244+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_node [0.062191s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/0bc72eb6-3a3a-464f-9827-ce94a457f7cd/allocation GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-316d768c-fd36-4962-b672-42289b15cc8c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 0bc72eb6-3a3a-464f-9827-ce94a457f7cd could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_against_single [0.096122s] ... 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-886ac6ca-ed90-47f2-9fc3-40f5f123ad7d 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_deploy_template.TestPost.test_create_steps_invalid_duplicate [0.101869s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/deploy_templates WITH {'name': 'CUSTOM_DT1', 'uuid': 'fbaa9a42-8947-4365-8530-ee2be23232ce', '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-e6779f0d-7917-4d0a-867f-074b5f7ddb22 X-Openstack-Ironic-Api-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.controllers.v1.test_allocation.TestDelete.test_delete_allocation_node_locked [0.045768s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/9eee383a-dff4-4d42-9a08-231fde532d5d GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-221985c0-caaa-406d-ad53-4d89f0765b8c X-Openstack-Ironic-Api-Maximum-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_event.TestEventValidator.test_event_missing_madatory_field [0.050366s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_detail_query [0.072311s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-179e977d-f39b-4e93-ae5e-e8a34fe6bf48 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": "2026-04-12T07:46:38.648782+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_event.TestPostRBAC.test_events_invalid_event [0.482287s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'invalid.event'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b5848749-e88b-40a8-9d02-c296ebc2e6a5 X-Openstack-Ironic-Api-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_allocation.TestPatch.test_add [0.112829s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/f1c0b03b-2e5f-4990-948a-a2112604e88e WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-08d74e52-13a1-4370-9867-dffe2968c71d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f1c0b03b-2e5f-4990-948a-a2112604e88e", "created_at": "2026-04-12T07:46:38.655698+00:00", "updated_at": "2026-04-12T07:46:38.707618+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/f1c0b03b-2e5f-4990-948a-a2112604e88e", "rel": "self"}, {"href": "http://localhost/allocations/f1c0b03b-2e5f-4990-948a-a2112604e88e", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_invalid_event_type [0.063077s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_events_unsupported_api_version [0.034260s] ... 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-700f1fe8-6585-4b2c-8956-7dd01fc6861d 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_chassis.TestListChassis.test_detail_query_false [0.087175s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0d6369ee-3b98-42e1-80dc-1a163925c32c 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-fdd8f3d7-67f8-407b-9d17-b9a7d344dbbf 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.api.controllers.v1.test_event.TestEventValidator.test_invalid_mac_network_port_event [0.045679s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_multiple_events [0.062998s] ... 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-8189965d-169e-4412-ab6a-795592776a47 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_chassis.TestListChassis.test_detail_using_query_and_fields [0.058886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?detail=True&fields=description WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-53de4db3-85a5-4b06-90dd-a637ec07701d X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_missing_mandatory_fields_network_port_event [0.056105s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_add_multi [0.116476s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/d9cd4127-72b0-49ad-a395-7cc934a3e018 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-8bfb69de-774a-461b-b2d8-7d64ab61b1fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d9cd4127-72b0-49ad-a395-7cc934a3e018", "created_at": "2026-04-12T07:46:38.785427+00:00", "updated_at": "2026-04-12T07:46:38.808557+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/d9cd4127-72b0-49ad-a395-7cc934a3e018", "rel": "self"}, {"href": "http://localhost/allocations/d9cd4127-72b0-49ad-a395-7cc934a3e018", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/d9cd4127-72b0-49ad-a395-7cc934a3e018 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b5e7feab-ad40-4c64-8be7-270d48300b49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d9cd4127-72b0-49ad-a395-7cc934a3e018", "created_at": "2026-04-12T07:46:38.785427+00:00", "updated_at": "2026-04-12T07:46:38.808557+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/d9cd4127-72b0-49ad-a395-7cc934a3e018", "rel": "self"}, {"href": "http://localhost/allocations/d9cd4127-72b0-49ad-a395-7cc934a3e018", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_bind_port_events [0.050626s] ... 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-71457670-ae82-4a57-bdbf-514d5f968cac 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_chassis.TestListChassis.test_detail_using_query_false_and_fields [0.071288s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?detail=False&fields=description WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-930e8605-5888-4fd2-928f-b4d60a9d6097 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.TestPatch.test_add_non_existent [0.068724s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/e7b162bf-a7ee-462e-b8f1-525aa141119e WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-10ed6b8e-fd6e-4b58-8bab-e1bdb2413355 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_delete_port_events [0.057526s] ... 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-db38c359-3722-4515-a0e5-497552b18838 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_chassis.TestListChassis.test_detail_using_query_old_version [0.078710s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7ad4a264-0636-42fa-882d-1ec98463cc0e 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}"} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_host_id [0.058598s] ... 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-de1febd6-92e7-430d-bfc1-5c660361f414 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_multi [0.081043s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb WITH [{'path': '/extra/foo2', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-749c0a2a-5220-4e0f-8b7a-f44cedd83924 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4aa7ec92-2103-4744-853f-7ce1c2d808fb", "created_at": "2026-04-12T07:46:38.937764+00:00", "updated_at": "2026-04-12T07:46:38.953664+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/4aa7ec92-2103-4744-853f-7ce1c2d808fb", "rel": "self"}, {"href": "http://localhost/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0c6fac6b-648b-4cd5-b22d-5783156f1a31 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4aa7ec92-2103-4744-853f-7ce1c2d808fb", "created_at": "2026-04-12T07:46:38.937764+00:00", "updated_at": "2026-04-12T07:46:38.953664+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/4aa7ec92-2103-4744-853f-7ce1c2d808fb", "rel": "self"}, {"href": "http://localhost/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb", "rel": "bookmark"}], "node_uuid": null} PATCH /v1/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3cb17650-04f6-4467-95f0-73e0e1565584 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4aa7ec92-2103-4744-853f-7ce1c2d808fb", "created_at": "2026-04-12T07:46:38.937764+00:00", "updated_at": "2026-04-12T07:46:38.981034+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb", "rel": "self"}, {"href": "http://localhost/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-298fc632-2302-4ff4-8149-508582a20664 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4aa7ec92-2103-4744-853f-7ce1c2d808fb", "created_at": "2026-04-12T07:46:38.937764+00:00", "updated_at": "2026-04-12T07:46:38.981034+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb", "rel": "self"}, {"href": "http://localhost/allocations/4aa7ec92-2103-4744-853f-7ce1c2d808fb", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_binding_vnic_type [0.039725s] ... 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-bbb41419-7d9e-4cd0-ab28-4913716444be X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_non_existent_property_fail [0.044254s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/8741e1b3-fc3d-48e1-954c-768fa866b5cf WITH [{'path': '/extra/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-6931a28d-210b-4975-aba8-005bc7bb8134 X-Openstack-Ironic-Api-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_chassis.TestListChassis.test_empty [0.075312s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-587424af-9c9b-4160-aabf-7d0a74e44f88 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_event.TestPostRBAC.test_network_port_event_invalid_device_id [0.047952s] ... 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-6bd935d9-acee-486d-b5a1-3028c16f4757 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_remove_singular [0.074094s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/bf4d0e3b-2e85-4778-9f12-ad81515533ea WITH [{'path': '/extra/a', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-796df4d3-0b7d-43d7-86a8-4a3adf846fbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "bf4d0e3b-2e85-4778-9f12-ad81515533ea", "created_at": "2026-04-12T07:46:39.070435+00:00", "updated_at": "2026-04-12T07:46:39.090264+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/bf4d0e3b-2e85-4778-9f12-ad81515533ea", "rel": "self"}, {"href": "http://localhost/allocations/bf4d0e3b-2e85-4778-9f12-ad81515533ea", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/bf4d0e3b-2e85-4778-9f12-ad81515533ea WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5222c3e8-714f-46ba-9d3b-86b66c684cdf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "bf4d0e3b-2e85-4778-9f12-ad81515533ea", "created_at": "2026-04-12T07:46:39.070435+00:00", "updated_at": "2026-04-12T07:46:39.090264+00:00", "candidate_nodes": [], "extra": {}, "last_error": null, "name": null, "owner": null, "resource_class": "baremetal", "state": "allocating", "traits": [], "links": [{"href": "http://localhost/v1/allocations/bf4d0e3b-2e85-4778-9f12-ad81515533ea", "rel": "self"}, {"href": "http://localhost/allocations/bf4d0e3b-2e85-4778-9f12-ad81515533ea", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_mac_address [0.045908s] ... 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-df0c9e21-9350-47c4-8887-811cf3cf0406 X-Openstack-Ironic-Api-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_allocation.TestPatch.test_remove_uuid [0.036514s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/559df7d3-8540-44cc-ae1b-1d38f1f3a437 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d7b276a7-2e61-468a-b9ff-b4af1c64042f X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_custom_fields [0.103866s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-71d55f4a-4ddf-48b8-8377-31a74cbb142e 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": "43076125-473b-42f7-a240-20236b9d298c", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/43076125-473b-42f7-a240-20236b9d298c", "rel": "self"}, {"href": "http://localhost/chassis/43076125-473b-42f7-a240-20236b9d298c", "rel": "bookmark"}]}, {"uuid": "a7f6ce2f-3f8a-4ef5-bcd5-736bf79cf64e", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/a7f6ce2f-3f8a-4ef5-bcd5-736bf79cf64e", "rel": "self"}, {"href": "http://localhost/chassis/a7f6ce2f-3f8a-4ef5-bcd5-736bf79cf64e", "rel": "bookmark"}]}, {"uuid": "09cc3c11-be03-463b-a809-922f8c183a2a", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/09cc3c11-be03-463b-a809-922f8c183a2a", "rel": "self"}, {"href": "http://localhost/chassis/09cc3c11-be03-463b-a809-922f8c183a2a", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_port_id [0.046111s] ... 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-ba3e7df2-216c-42ae-8e36-1f512a1205b7 X-Openstack-Ironic-Api-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_allocation.TestPatch.test_replace_invalid_name [0.032129s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/d44ab237-cb71-40c6-819e-18f4b0e06d9b WITH [{'path': '/name', 'value': '[test]', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a1cd4ebf-4515-4d10-bf9f-1c69bce2ecb6 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_collection_pagination_no_uuid [0.056303s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?fields=extra&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-19cb6ff6-d58e-4aa9-a043-9dc253971adc 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/93addd99-eae7-43d7-90cf-bba839c4684c", "rel": "self"}, {"href": "http://localhost/chassis/93addd99-eae7-43d7-90cf-bba839c4684c", "rel": "bookmark"}]}, {"extra": {}, "links": [{"href": "http://localhost/v1/chassis/ad24f2d4-0e4c-46c7-9f54-f3bf8129d41b", "rel": "self"}, {"href": "http://localhost/chassis/ad24f2d4-0e4c-46c7-9f54-f3bf8129d41b", "rel": "bookmark"}]}], "next": "http://localhost/v1/chassis?sort_key=id&sort_dir=asc&fields=extra&limit=2&marker=ad24f2d4-0e4c-46c7-9f54-f3bf8129d41b"} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_port_event_invalid_status [0.047911s] ... 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-96555b7f-10b4-4f6d-b279-6078e8f400d5 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestEventValidator.test_simple_event_type [0.435723s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_replace_multi [0.093565s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/c697364e-90f2-4ef0-8df7-8c5e234c0200 WITH [{'path': '/extra/foo2', 'value': 'new value', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d56e217c-62e8-478c-aca3-7020ba9586ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c697364e-90f2-4ef0-8df7-8c5e234c0200", "created_at": "2026-04-12T07:46:39.220527+00:00", "updated_at": "2026-04-12T07:46:39.261912+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/c697364e-90f2-4ef0-8df7-8c5e234c0200", "rel": "self"}, {"href": "http://localhost/allocations/c697364e-90f2-4ef0-8df7-8c5e234c0200", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/c697364e-90f2-4ef0-8df7-8c5e234c0200 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-94010687-036d-490e-9e65-76fe5c8f6a24 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c697364e-90f2-4ef0-8df7-8c5e234c0200", "created_at": "2026-04-12T07:46:39.220527+00:00", "updated_at": "2026-04-12T07:46:39.261912+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/c697364e-90f2-4ef0-8df7-8c5e234c0200", "rel": "self"}, {"href": "http://localhost/allocations/c697364e-90f2-4ef0-8df7-8c5e234c0200", "rel": "bookmark"}], "node_uuid": null} {1} ironic.tests.unit.api.controllers.v1.test_event.TestPostRBAC.test_network_unbind_port_events [0.050660s] ... 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-aaa8385c-91d1-468d-99b6-c374bc44d456 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_chassis.TestListChassis.test_get_custom_fields_invalid_api_version [0.075839s] ... 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-1a4e0491-02bf-42f3-80af-76ce4dc08c4b 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.TestPost.test_events [0.036344s] ... 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-5dcc1343-7470-4204-b26d-a1b3fe3d9ffc 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_event.TestPostRBAC.test_network_unknown_event_property [0.045536s] ... 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-dca8229f-0439-48c8-a799-ec0230e7f13b X-Openstack-Ironic-Api-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_chassis.TestListChassis.test_get_custom_fields_invalid_fields [0.049900s] ... 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-e5b5f839-9a32-4d82-b1d5-255389d11acc X-Openstack-Ironic-Api-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.TestPatch.test_replace_name_with_none [0.065825s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/60c6dc1e-9957-4a91-96e9-9e573bb1a073 WITH [{'path': '/name', 'value': None, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a65f2e6a-c8f3-46c9-b22c-fc1bc3a359e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "60c6dc1e-9957-4a91-96e9-9e573bb1a073", "created_at": "2026-04-12T07:46:39.305703+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/60c6dc1e-9957-4a91-96e9-9e573bb1a073", "rel": "self"}, {"href": "http://localhost/allocations/60c6dc1e-9957-4a91-96e9-9e573bb1a073", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/60c6dc1e-9957-4a91-96e9-9e573bb1a073 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-537ddd1b-a500-41ff-a92d-cba6eca79d5e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "60c6dc1e-9957-4a91-96e9-9e573bb1a073", "created_at": "2026-04-12T07:46:39.305703+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/60c6dc1e-9957-4a91-96e9-9e573bb1a073", "rel": "self"}, {"href": "http://localhost/allocations/60c6dc1e-9957-4a91-96e9-9e573bb1a073", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_does_not_contain_event [0.059579s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'INVALID': 'fake.event'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1651cb2f-a687-48ae-9c16-f6945c47f92c X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePatch.test_node_add_parent [0.094419s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/55748914-e0cc-4d5b-8fe0-3898675cc257 WITH [{'path': '/parent_node', 'value': '1be26c0b-03f2-4d2e-ae87-c02d7f33c123', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c8915617-5523-4cd5-90e8-09cd2579424e 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": "2026-04-12T07:46:39.349850+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"}]} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_get_one [0.089780s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e76e4f6a-fead-47d1-8bcb-48862ee53cfe 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": "2026-04-12T07:46:39.406885+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.api.controllers.v1.test_event.TestPost.test_events_invalid_event [0.052842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/events WITH {'events': [{'event': 'invalid.event'}]} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-772ecfb5-f69c-45df-a8b9-33d2d1cf03ee X-Openstack-Ironic-Api-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_allocation.TestPatch.test_replace_singular [0.105838s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/28de22b7-c39e-436d-9861-167160477a1f WITH [{'path': '/name', 'value': 'test', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e8c29366-af19-4a4e-bdbd-9265cc298a6d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "28de22b7-c39e-436d-9861-167160477a1f", "created_at": "2026-04-12T07:46:39.391927+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/28de22b7-c39e-436d-9861-167160477a1f", "rel": "self"}, {"href": "http://localhost/allocations/28de22b7-c39e-436d-9861-167160477a1f", "rel": "bookmark"}], "node_uuid": null} GET /v1/allocations/28de22b7-c39e-436d-9861-167160477a1f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2872407d-bdc5-47aa-a8e6-a73d9fda7de1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "28de22b7-c39e-436d-9861-167160477a1f", "created_at": "2026-04-12T07:46:39.391927+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/28de22b7-c39e-436d-9861-167160477a1f", "rel": "self"}, {"href": "http://localhost/allocations/28de22b7-c39e-436d-9861-167160477a1f", "rel": "bookmark"}], "node_uuid": null} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_events_unsupported_api_version [0.038169s] ... 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-b6dbbe94-0d04-4f65-8e0a-f4f7d35cb2d4 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePatch.test_node_add_parent_node_fail_wrong_version [0.045021s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/f84bc0e3-53a5-46cb-b692-2bbd4ee6b60b 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-07431bf5-a296-4cf6-8f65-e397ebf96d4a 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_chassis.TestListChassis.test_get_one_custom_fields [0.058339s] ... 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-ccdd2d15-0d5e-493b-81b4-c17ca9e89325 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"}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_multiple_events [0.052730s] ... 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-0a90abff-e364-4578-ae1b-80a4e2973771 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_chassis.TestListChassis.test_links [0.065395s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/512547f1-7249-4aad-8b70-717a2453eccd WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-99231aeb-c012-493a-8dfb-62cb9901a854 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "512547f1-7249-4aad-8b70-717a2453eccd", "created_at": "2026-04-12T07:46:39.536004+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/512547f1-7249-4aad-8b70-717a2453eccd", "rel": "self"}, {"href": "http://localhost/chassis/512547f1-7249-4aad-8b70-717a2453eccd", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/512547f1-7249-4aad-8b70-717a2453eccd/nodes", "rel": "self"}, {"href": "http://localhost/chassis/512547f1-7249-4aad-8b70-717a2453eccd/nodes", "rel": "bookmark"}]]} GET /v1/chassis/512547f1-7249-4aad-8b70-717a2453eccd WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6c2d0fe6-49ed-45c2-963d-80c94493550b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "512547f1-7249-4aad-8b70-717a2453eccd", "created_at": "2026-04-12T07:46:39.536004+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/512547f1-7249-4aad-8b70-717a2453eccd", "rel": "self"}, {"href": "http://localhost/chassis/512547f1-7249-4aad-8b70-717a2453eccd", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/512547f1-7249-4aad-8b70-717a2453eccd/nodes", "rel": "self"}, {"href": "http://localhost/chassis/512547f1-7249-4aad-8b70-717a2453eccd/nodes", "rel": "bookmark"}]]} GET /chassis/512547f1-7249-4aad-8b70-717a2453eccd WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f454c681-6e9a-44d4-be00-b7e6271dfacc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "512547f1-7249-4aad-8b70-717a2453eccd", "created_at": "2026-04-12T07:46:39.536004+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/512547f1-7249-4aad-8b70-717a2453eccd", "rel": "self"}, {"href": "http://localhost/chassis/512547f1-7249-4aad-8b70-717a2453eccd", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/512547f1-7249-4aad-8b70-717a2453eccd/nodes", "rel": "self"}, {"href": "http://localhost/chassis/512547f1-7249-4aad-8b70-717a2453eccd/nodes", "rel": "bookmark"}]]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_bind_port_events [0.043122s] ... 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-b4e73d5b-1b52-4c0f-bea3-a6b5548f4232 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_allocation.TestPatch.test_update_error [0.129562s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/9cec3ac0-3b47-4831-9bbb-7858e15d5efc WITH [{'path': '/name', 'value': 'new', 'op': 'replace'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-890e0c43-77f7-468c-972e-764f6fd4bcb3 X-Openstack-Ironic-Api-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_chassis.TestListChassis.test_links_public_url [0.052722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3b77e4b0-ecbb-4ae9-8bb6-bd032f76c8ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "created_at": "2026-04-12T07:46:39.582661+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://foo/v1/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "rel": "self"}, {"href": "http://foo/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "rel": "bookmark"}], "nodes": [[{"href": "http://foo/v1/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374/nodes", "rel": "self"}, {"href": "http://foo/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374/nodes", "rel": "bookmark"}]]} GET /v1/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9ebb943b-1918-4130-89a7-606a493f5c96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "created_at": "2026-04-12T07:46:39.582661+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://foo/v1/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "rel": "self"}, {"href": "http://foo/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "rel": "bookmark"}], "nodes": [[{"href": "http://foo/v1/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374/nodes", "rel": "self"}, {"href": "http://foo/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374/nodes", "rel": "bookmark"}]]} GET /chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d182e8aa-5e6c-4d7d-bfec-7ec0e246bcbb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "created_at": "2026-04-12T07:46:39.582661+00:00", "updated_at": null, "description": "data-center-1-chassis", "extra": {}, "links": [{"href": "http://foo/v1/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "rel": "self"}, {"href": "http://foo/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374", "rel": "bookmark"}], "nodes": [[{"href": "http://foo/v1/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374/nodes", "rel": "self"}, {"href": "http://foo/chassis/d46b911f-bb1b-4eb1-8a85-5d97bb7fe374/nodes", "rel": "bookmark"}]]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_delete_port_events [0.036742s] ... 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-3b0c99fa-fd24-4619-8134-c134b9cbd6ee 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.TestNodeParentNodePatch.test_node_add_parent_node_not_uuid [0.153768s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/cded387d-790c-43e0-a6da-7ba072f6b165 WITH [{'path': '/parent_node', 'value': 'djarin', 'op': 'add'}] GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c79a3b6d-e6f6-47f4-9147-48b648085b32 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_allocation.TestPatch.test_update_not_allowed [0.075621s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/5cb1c5bb-6e50-42ca-bc67-ebe6ca262867 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 405 Method Not Allowed Content-Type: application/json Openstack-Request-Id: req-18a8fd80-2659-48aa-bc0c-16dcfe609139 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}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_host_id [0.046737s] ... 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-34a7a94e-7461-44aa-a6d0-bb4d5d1d88fc X-Openstack-Ironic-Api-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_chassis.TestListChassis.test_many [0.088516s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e3fa580e-53b3-4331-a4ed-268715c6113e 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": "aa39571a-048b-4940-8926-23d862759aa1", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/aa39571a-048b-4940-8926-23d862759aa1", "rel": "self"}, {"href": "http://localhost/chassis/aa39571a-048b-4940-8926-23d862759aa1", "rel": "bookmark"}]}, {"uuid": "7f7fc486-32d9-4431-843b-6c8d9a826230", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/7f7fc486-32d9-4431-843b-6c8d9a826230", "rel": "self"}, {"href": "http://localhost/chassis/7f7fc486-32d9-4431-843b-6c8d9a826230", "rel": "bookmark"}]}, {"uuid": "023e14d2-55a3-4b78-b03d-17ab04c0d260", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/023e14d2-55a3-4b78-b03d-17ab04c0d260", "rel": "self"}, {"href": "http://localhost/chassis/023e14d2-55a3-4b78-b03d-17ab04c0d260", "rel": "bookmark"}]}, {"uuid": "4744cedb-e8bc-4bf4-8ffd-4acf49f4e3cf", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/4744cedb-e8bc-4bf4-8ffd-4acf49f4e3cf", "rel": "self"}, {"href": "http://localhost/chassis/4744cedb-e8bc-4bf4-8ffd-4acf49f4e3cf", "rel": "bookmark"}]}, {"uuid": "340c4f49-4766-4321-892c-4b4a13334d02", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/340c4f49-4766-4321-892c-4b4a13334d02", "rel": "self"}, {"href": "http://localhost/chassis/340c4f49-4766-4321-892c-4b4a13334d02", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_not_found [0.070369s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/310e65d2-e7d9-4069-a051-fc1cd3299235 WITH [{'path': '/name', 'value': 'b', 'op': 'replace'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fb6e1abc-1a41-4662-b690-8df46995e5ce X-Openstack-Ironic-Api-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 310e65d2-e7d9-4069-a051-fc1cd3299235 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_binding_vnic_type [0.090823s] ... 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-a6ba8d8a-0be5-49dd-af7c-bbe416384131 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_allocation.TestPatch.test_update_owner_not_acceptable [0.102877s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/7b949120-c329-4cc2-a305-aac5469ef312 WITH [{'path': '/owner', 'value': '54321', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8098149a-c808-46a7-aae3-5779cd6bfe0e X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePatch.test_node_remove_parent [0.199078s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/805a83c6-7791-4ff4-bc7c-33d5f6f26227 WITH [{'path': '/parent_node', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-91941532-30aa-4dc7-9489-8df540c69903 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": "2026-04-12T07:46:39.696073+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.TestPost.test_network_port_event_invalid_device_id [0.110296s] ... 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-f05e260f-f59f-4d9e-9fe6-5839b56dd482 X-Openstack-Ironic-Api-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_chassis.TestListChassis.test_nodes_subresource [0.197584s] ... 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-0736ed86-ac35-4ef0-8208-0d84b6ce9252 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": "d765fba0-443d-4274-968f-010a3931407f", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/d765fba0-443d-4274-968f-010a3931407f", "rel": "self"}, {"href": "http://localhost/nodes/d765fba0-443d-4274-968f-010a3931407f", "rel": "bookmark"}]}, {"uuid": "3a6a638b-dd65-465b-9200-220d4f9d9d01", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/3a6a638b-dd65-465b-9200-220d4f9d9d01", "rel": "self"}, {"href": "http://localhost/nodes/3a6a638b-dd65-465b-9200-220d4f9d9d01", "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-069ece1e-4196-4172-9a43-f38a649ffec2 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": "d765fba0-443d-4274-968f-010a3931407f", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/d765fba0-443d-4274-968f-010a3931407f", "rel": "self"}, {"href": "http://localhost/nodes/d765fba0-443d-4274-968f-010a3931407f", "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=d765fba0-443d-4274-968f-010a3931407f"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_mac_address [0.093737s] ... 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-ff74b368-d5e1-4f7b-a929-af0f0f405120 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_chassis_not_found [0.085621s] ... 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-3400f363-8b81-4ac0-930d-0eaaefc16854 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}"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis [0.154825s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 204 No Content Openstack-Request-Id: req-af9eeeaf-9dcb-4c8d-9f0b-65f0a1458047 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-f78e8df5-8dff-4e16-96d2-992ddd2dd5ae 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_event.TestPost.test_network_port_event_invalid_port_id [0.041726s] ... 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-1a6747ed-e08c-4bb3-848f-e7c17503ff9e X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_cleanhold [0.182199s] ... 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-0e7fdb51-57cc-40de-9200-546474da5ad1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.85 {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_link [0.052671s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-69d7bded-0a59-4712-944e-7008bdddc5a3 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": "2026-04-12T07:46:40.023908+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.api.controllers.v1.test_event.TestPost.test_network_port_event_invalid_status [0.051388s] ... 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-e56786ee-c709-45d5-a256-487561c50a72 X-Openstack-Ironic-Api-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_chassis.TestDelete.test_delete_chassis_not_found [0.093035s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/84432c03-37ea-4bc0-badf-6bcc7e3750b9 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6c9718f9-f121-45fa-b539-e06ca209682f 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 84432c03-37ea-4bc0-badf-6bcc7e3750b9 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_nodes_subresource_no_uuid [0.053810s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/nodes WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-470eadff-803f-451d-bd40-9f57cb2e9cf6 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}"} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unbind_port_events [0.068127s] ... 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-75b77c93-b105-4901-93bf-e86d47b15edc 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_chassis.TestListChassis.test_one [0.042282s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f508f9ef-1b9c-4ee0-9f9e-6c7538d922c1 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_chassis.TestListChassis.test_sort_key [0.047164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-41a14fb8-acc4-4cfc-a614-8285f10e365a 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": "63946da7-0730-4d18-a2aa-44e2eb598688", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/63946da7-0730-4d18-a2aa-44e2eb598688", "rel": "self"}, {"href": "http://localhost/chassis/63946da7-0730-4d18-a2aa-44e2eb598688", "rel": "bookmark"}]}, {"uuid": "826cc9e8-8579-4f67-bae9-8e4e4a40d917", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/826cc9e8-8579-4f67-bae9-8e4e4a40d917", "rel": "self"}, {"href": "http://localhost/chassis/826cc9e8-8579-4f67-bae9-8e4e4a40d917", "rel": "bookmark"}]}, {"uuid": "ccd83635-56f5-4c5b-b147-bfd9cd778d52", "description": "data-center-1-chassis", "links": [{"href": "http://localhost/v1/chassis/ccd83635-56f5-4c5b-b147-bfd9cd778d52", "rel": "self"}, {"href": "http://localhost/chassis/ccd83635-56f5-4c5b-b147-bfd9cd778d52", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_event.TestPost.test_network_unknown_event_property [0.073014s] ... 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-d7d77343-bfb0-4f84-8f74-851cbc4c5675 X-Openstack-Ironic-Api-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.TestPut.test_abort_cleanwait [0.187716s] ... 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-337ca814-6d2c-48bf-9eae-505c90d686f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.13 {3} ironic.tests.unit.api.controllers.v1.test_chassis.TestListChassis.test_sort_key_invalid [0.041027s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bc83603a-f194-4433-8a38-c6e1a1a2a0e7 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-06223ef2-3232-4a84-b3f5-fa9e2d8fcd99 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}"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_chassis_with_node [0.168332s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-00ecebc3-a7ef-46b3-b9ae-e09b2a662512 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}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links [0.053461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7bcdd936-a0f0-4d81-b959-5170d3b5bccd 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": "727e67eb-d076-42a0-b538-5cf5eec206ab", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/727e67eb-d076-42a0-b538-5cf5eec206ab", "rel": "self"}, {"href": "http://localhost/conductors/727e67eb-d076-42a0-b538-5cf5eec206ab", "rel": "bookmark"}], "alive": true}, {"hostname": "34bd10e4-f548-4989-9c8c-5a68ce9d6d18", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/34bd10e4-f548-4989-9c8c-5a68ce9d6d18", "rel": "self"}, {"href": "http://localhost/conductors/34bd10e4-f548-4989-9c8c-5a68ce9d6d18", "rel": "bookmark"}], "alive": true}, {"hostname": "59442bd3-5c88-4e27-9494-06d958d0a3ee", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/59442bd3-5c88-4e27-9494-06d958d0a3ee", "rel": "self"}, {"href": "http://localhost/conductors/59442bd3-5c88-4e27-9494-06d958d0a3ee", "rel": "bookmark"}], "alive": true}], "next": "http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,conductor_group,alive&limit=3&marker=59442bd3-5c88-4e27-9494-06d958d0a3ee"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_associated_nodes_error [0.085872s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=blah WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-49f51a3e-d2cc-447b-b93e-c7600b7684ec 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_conductor.TestListConductors.test_collection_links_custom_fields [0.055559s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?fields=hostname,alive WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9a307133-d5aa-454b-a61d-558483e50d15 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": "f58006ed-d1c8-4dc9-8e12-853ea06459f4", "links": [{"href": "http://localhost/v1/conductors/f58006ed-d1c8-4dc9-8e12-853ea06459f4", "rel": "self"}, {"href": "http://localhost/conductors/f58006ed-d1c8-4dc9-8e12-853ea06459f4", "rel": "bookmark"}], "alive": true}, {"hostname": "76f75305-316f-42a6-b97c-8449802c9f10", "links": [{"href": "http://localhost/v1/conductors/76f75305-316f-42a6-b97c-8449802c9f10", "rel": "self"}, {"href": "http://localhost/conductors/76f75305-316f-42a6-b97c-8449802c9f10", "rel": "bookmark"}], "alive": true}, {"hostname": "3e0b2256-3252-4523-a72b-ca82a901d9fa", "links": [{"href": "http://localhost/v1/conductors/3e0b2256-3252-4523-a72b-ca82a901d9fa", "rel": "self"}, {"href": "http://localhost/conductors/3e0b2256-3252-4523-a72b-ca82a901d9fa", "rel": "bookmark"}], "alive": true}], "next": "http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,alive&limit=3&marker=3e0b2256-3252-4523-a72b-ca82a901d9fa"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestDelete.test_delete_nodes_subresource [0.110019s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66/nodes GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-679baebd-6eaf-451d-870b-1291cd06e818 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.TestPut.test_abort_deployhold [0.153964s] ... 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-6394f18f-490d-4b32-98cc-c3e731129f10 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_associated_nodes_insensitive [0.103807s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-94a50531-5a8f-4d5d-b494-b2e2d13a0d81 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": "e233bd6a-6620-4465-a390-d33d4cf1029d", "instance_uuid": "baa8e3fa-7853-4e22-86ce-7ad7c0ee2966", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/e233bd6a-6620-4465-a390-d33d4cf1029d", "rel": "self"}, {"href": "http://localhost/nodes/e233bd6a-6620-4465-a390-d33d4cf1029d", "rel": "bookmark"}]}, {"uuid": "f165d33f-1213-4578-ae28-164c38fc0755", "instance_uuid": "17156622-16d1-41df-9319-7cb558094be4", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f165d33f-1213-4578-ae28-164c38fc0755", "rel": "self"}, {"href": "http://localhost/nodes/f165d33f-1213-4578-ae28-164c38fc0755", "rel": "bookmark"}]}, {"uuid": "89c8842c-8d3a-4247-871c-2cd29e5fe851", "instance_uuid": "37c08630-913f-4f5f-bf66-a6d4cb1e18fc", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/89c8842c-8d3a-4247-871c-2cd29e5fe851", "rel": "self"}, {"href": "http://localhost/nodes/89c8842c-8d3a-4247-871c-2cd29e5fe851", "rel": "bookmark"}]}, {"uuid": "ed918977-a8b5-419f-86c2-9413dfef0355", "instance_uuid": "213bfba3-35da-4738-963c-b7287ea363df", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/ed918977-a8b5-419f-86c2-9413dfef0355", "rel": "self"}, {"href": "http://localhost/nodes/ed918977-a8b5-419f-86c2-9413dfef0355", "rel": "bookmark"}]}]} GET /v1/nodes?associated=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b5dcb55e-eb59-4e4c-a717-05c09ec4592a 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": "e233bd6a-6620-4465-a390-d33d4cf1029d", "instance_uuid": "baa8e3fa-7853-4e22-86ce-7ad7c0ee2966", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/e233bd6a-6620-4465-a390-d33d4cf1029d", "rel": "self"}, {"href": "http://localhost/nodes/e233bd6a-6620-4465-a390-d33d4cf1029d", "rel": "bookmark"}]}, {"uuid": "f165d33f-1213-4578-ae28-164c38fc0755", "instance_uuid": "17156622-16d1-41df-9319-7cb558094be4", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f165d33f-1213-4578-ae28-164c38fc0755", "rel": "self"}, {"href": "http://localhost/nodes/f165d33f-1213-4578-ae28-164c38fc0755", "rel": "bookmark"}]}, {"uuid": "89c8842c-8d3a-4247-871c-2cd29e5fe851", "instance_uuid": "37c08630-913f-4f5f-bf66-a6d4cb1e18fc", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/89c8842c-8d3a-4247-871c-2cd29e5fe851", "rel": "self"}, {"href": "http://localhost/nodes/89c8842c-8d3a-4247-871c-2cd29e5fe851", "rel": "bookmark"}]}, {"uuid": "ed918977-a8b5-419f-86c2-9413dfef0355", "instance_uuid": "213bfba3-35da-4738-963c-b7287ea363df", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/ed918977-a8b5-419f-86c2-9413dfef0355", "rel": "self"}, {"href": "http://localhost/nodes/ed918977-a8b5-419f-86c2-9413dfef0355", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_collection_links_default_limit [0.091417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-61a2ce4f-ba9a-414c-a94a-83fa2098b8cc 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": "3cb23d5e-422b-4bf1-a8c0-b92e409feb55", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/3cb23d5e-422b-4bf1-a8c0-b92e409feb55", "rel": "self"}, {"href": "http://localhost/conductors/3cb23d5e-422b-4bf1-a8c0-b92e409feb55", "rel": "bookmark"}], "alive": true}, {"hostname": "fc492d00-6385-420d-8a25-35035f25dc02", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/fc492d00-6385-420d-8a25-35035f25dc02", "rel": "self"}, {"href": "http://localhost/conductors/fc492d00-6385-420d-8a25-35035f25dc02", "rel": "bookmark"}], "alive": true}, {"hostname": "4400226b-dd25-4056-bfb5-b6596bc9ca6e", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/4400226b-dd25-4056-bfb5-b6596bc9ca6e", "rel": "self"}, {"href": "http://localhost/conductors/4400226b-dd25-4056-bfb5-b6596bc9ca6e", "rel": "bookmark"}], "alive": true}], "next": "http://localhost/v1/conductors?sort_key=id&sort_dir=asc&fields=hostname,conductor_group,alive&limit=3&marker=4400226b-dd25-4056-bfb5-b6596bc9ca6e"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_abort_invalid_state [0.098523s] ... 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-74051cf0-cd09-41a5-82f6-bd6f22c78788 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links [0.078723s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e79d4f80-b31e-4f23-ad43-c0de6e20a95d 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": "24d1d2a6-b959-464f-b8da-fc0c58c174be", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/24d1d2a6-b959-464f-b8da-fc0c58c174be", "rel": "self"}, {"href": "http://localhost/nodes/24d1d2a6-b959-464f-b8da-fc0c58c174be", "rel": "bookmark"}]}, {"uuid": "85cf60e2-727f-40e8-89f7-7bfba45e577d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/85cf60e2-727f-40e8-89f7-7bfba45e577d", "rel": "self"}, {"href": "http://localhost/nodes/85cf60e2-727f-40e8-89f7-7bfba45e577d", "rel": "bookmark"}]}, {"uuid": "561c5d60-c13a-4bfe-a153-5ec60992bd72", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/561c5d60-c13a-4bfe-a153-5ec60992bd72", "rel": "self"}, {"href": "http://localhost/nodes/561c5d60-c13a-4bfe-a153-5ec60992bd72", "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=561c5d60-c13a-4bfe-a153-5ec60992bd72"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_empty [0.064282s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2bdcbfe4-d34b-482b-b85b-22e5ba6f3009 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_conductor.TestListConductors.test_get_collection_custom_fields [0.052127s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?fields=hostname,alive WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-997fdbce-3cf7-4728-8f6c-c0e942097a6a 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}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_custom_fields [0.101678s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=driver_info,uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-76cf2c0a-3f9d-471d-874f-4469419ffcaf 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": "830c8fb1-6966-43f8-97e2-b68670820055", "driver_info": {"fake": "value"}, "links": [{"href": "http://localhost/v1/nodes/830c8fb1-6966-43f8-97e2-b68670820055", "rel": "self"}, {"href": "http://localhost/nodes/830c8fb1-6966-43f8-97e2-b68670820055", "rel": "bookmark"}]}, {"uuid": "478e145b-1569-419d-9a4e-b771fb0ab0f1", "driver_info": {"fake": "value"}, "links": [{"href": "http://localhost/v1/nodes/478e145b-1569-419d-9a4e-b771fb0ab0f1", "rel": "self"}, {"href": "http://localhost/nodes/478e145b-1569-419d-9a4e-b771fb0ab0f1", "rel": "bookmark"}]}, {"uuid": "382e92af-7fc0-466c-a34d-e8df2458ce8b", "driver_info": {"fake": "value"}, "links": [{"href": "http://localhost/v1/nodes/382e92af-7fc0-466c-a34d-e8df2458ce8b", "rel": "self"}, {"href": "http://localhost/nodes/382e92af-7fc0-466c-a34d-e8df2458ce8b", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=driver_info,uuid&limit=3&marker=382e92af-7fc0-466c-a34d-e8df2458ce8b"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_custom_fields_invalid_fields [0.051533s] ... 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-df1ff0c6-dd8f-4064-90d2-50bc187ea19f X-Openstack-Ironic-Api-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.TestPut.test_adopt_from_active_fails [0.118959s] ... 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-7ebbaa46-40c8-4e7f-8024-605845a913dd 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}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one [0.050095s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ad5b35c0-96b0-469b-a029-38d31f1bdf36 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": "2026-04-12T07:46:40.641497+00:00", "updated_at": "2026-04-12T07:46:40.641199+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} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_multi [0.309361s] ... 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-1ba71025-36db-41cf-9949-4e21532b73d8 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": "2026-04-12T07:46:40.631322+00:00", "updated_at": "2026-04-12T07:46:40.653650+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-ea0e9c7b-8235-4c3c-9e57-d68f35a65cdc 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": "2026-04-12T07:46:40.631322+00:00", "updated_at": "2026-04-12T07:46:40.653650+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_conductor.TestListConductors.test_get_one_conductor_offline_old_heartbeat [0.041881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-37b8cf01-5fb3-4fe4-9cc0-bf4a1f0b8542 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} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_adoptfail [0.108645s] ... 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-8b81aa26-f9f1-450f-bec9-bb36b9789df3 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_collection_links_default_limit [0.122632s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-180941c7-d099-4973-a390-8398fb889223 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": "f901e906-be42-422c-9e8d-8546ebe3d32f", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f901e906-be42-422c-9e8d-8546ebe3d32f", "rel": "self"}, {"href": "http://localhost/nodes/f901e906-be42-422c-9e8d-8546ebe3d32f", "rel": "bookmark"}]}, {"uuid": "b428442c-60a8-4384-b1f6-249e4848d64d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/b428442c-60a8-4384-b1f6-249e4848d64d", "rel": "self"}, {"href": "http://localhost/nodes/b428442c-60a8-4384-b1f6-249e4848d64d", "rel": "bookmark"}]}, {"uuid": "cc2ecfa4-8b95-4f27-bb6a-47ec06afd4ea", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/cc2ecfa4-8b95-4f27-bb6a-47ec06afd4ea", "rel": "self"}, {"href": "http://localhost/nodes/cc2ecfa4-8b95-4f27-bb6a-47ec06afd4ea", "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=cc2ecfa4-8b95-4f27-bb6a-47ec06afd4ea"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_conductor_offline_unregistered [0.045479s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-660da028-24b8-4997-a390-4f94c76cc508 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": "2026-04-12T07:46:40.744138+00:00", "updated_at": "2026-04-12T07:46:40.747439+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} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root [0.103633s] ... 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-38e1cb1c-46ee-424b-90f4-fa53557e2f07 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": "2026-04-12T07:46:40.734057+00:00", "updated_at": "2026-04-12T07:46:40.762431+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"}]]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_collection_links_instance_uuid_param [0.078856s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?instance_uuid=c1bb2c62-e245-4c69-8714-874cddeec10c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8ca55635-a155-4a8f-baa4-ab2371c1e369 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": "a5fe43e0-f432-46fe-a847-6b7a55f3e1a4", "instance_uuid": "c1bb2c62-e245-4c69-8714-874cddeec10c", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/a5fe43e0-f432-46fe-a847-6b7a55f3e1a4", "rel": "self"}, {"href": "http://localhost/nodes/a5fe43e0-f432-46fe-a847-6b7a55f3e1a4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_adopt_from_manage [0.084799s] ... 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-d707486f-f290-423a-a874-c41b3baff34c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.17 {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_custom_fields [0.048331s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks?fields=hostname,alive WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c48cd567-cd74-4c06-a2e5-50442a4d1495 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} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_add_root_non_existent [0.044302s] ... 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-fb49a4ae-1d83-4dc4-91f6-a41ad65a966b 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}"} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_patch_nodes_subresource [0.033375s] ... 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-a63f9af3-cf4f-4b11-bb54-e57847840dc0 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.TestPut.test_adopt_raises_error_before_1_17 [0.068894s] ... 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-cfec10b6-f4b7-43c6-b734-e1ef3c13c337 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}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_with_invalid_api [0.066280s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1b73e9c2-0d91-46a4-9874-2d312d0aafc3 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_node.TestListNodes.test_detail [0.131983s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3a012244-4331-4c62-b1f1-74b094162d1f 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": "2026-04-12T07:46:40.887954+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_chassis.TestPatch.test_remove_multi [0.096837s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c WITH [{'path': '/extra/foo2', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0fc8f7c7-12ca-4b84-b40a-7a7045e18713 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "created_at": "2026-04-12T07:46:40.891598+00:00", "updated_at": "2026-04-12T07:46:40.901950+00:00", "description": "foobar", "extra": {"foo1": "bar1", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "rel": "self"}, {"href": "http://localhost/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c/nodes", "rel": "self"}, {"href": "http://localhost/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c/nodes", "rel": "bookmark"}]]} GET /v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-052876bb-16f6-4510-bc7e-d1095c82435e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "created_at": "2026-04-12T07:46:40.891598+00:00", "updated_at": "2026-04-12T07:46:40.901950+00:00", "description": "foobar", "extra": {"foo1": "bar1", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "rel": "self"}, {"href": "http://localhost/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c/nodes", "rel": "self"}, {"href": "http://localhost/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c/nodes", "rel": "bookmark"}]]} PATCH /v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c WITH [{'path': '/extra', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4763ea3b-4317-43e9-80c2-2055551a6e3a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "created_at": "2026-04-12T07:46:40.891598+00:00", "updated_at": "2026-04-12T07:46:40.927143+00:00", "description": "foobar", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "rel": "self"}, {"href": "http://localhost/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c/nodes", "rel": "self"}, {"href": "http://localhost/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c/nodes", "rel": "bookmark"}]]} GET /v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-749ba32e-2317-4f15-bbbe-fc6363930b2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "created_at": "2026-04-12T07:46:40.891598+00:00", "updated_at": "2026-04-12T07:46:40.927143+00:00", "description": "foobar", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "rel": "self"}, {"href": "http://localhost/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c/nodes", "rel": "self"}, {"href": "http://localhost/chassis/91f22a62-e4d3-4b62-92eb-2d0d5794e87c/nodes", "rel": "bookmark"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_adopting_state [0.084741s] ... 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-eae38ed9-c22a-4314-9161-fca99be670e4 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-6b8a3283-b8bc-4eab-8553-71f5fadf996c 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-ff6f4918-7d20-4842-a134-358a7048de32 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}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_get_one_with_port_and_v6 [0.100198s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/[::1]:8090 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ba3062cc-8e7c-43b2-bd0d-b73bef03e532 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": "2026-04-12T07:46:40.962134+00:00", "updated_at": "2026-04-12T07:46:40.961886+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} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_non_existent_property_fail [0.056121s] ... 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-82d8f4ec-3cc7-4480-bf25-872e9e1103a2 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.TestPut.test_bad_requests_in_adoption_failed_state [0.101933s] ... 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-72841b1d-c62c-4107-b550-596d4e87753a 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-8703c6d1-fa08-4223-9fb8-f6a4e0b70337 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-fd8fbc13-b50b-4e83-8b78-2f3097d29aae 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_against_single [0.138128s] ... 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-cacd2114-6609-4b1d-b484-b4a9d0ccdd26 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_chassis.TestPatch.test_remove_singular [0.076389s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c WITH [{'path': '/description', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2558aa28-ab5f-4cc3-a3b4-1e9f3f97d9ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "d5a0cbb1-de97-4b1d-8763-244c9f8ad87c", "created_at": "2026-04-12T07:46:41.051928+00:00", "updated_at": "2026-04-12T07:46:41.072572+00:00", "description": null, "extra": {"a": "b"}, "links": [{"href": "http://localhost/v1/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c", "rel": "self"}, {"href": "http://localhost/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c/nodes", "rel": "self"}, {"href": "http://localhost/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c/nodes", "rel": "bookmark"}]]} GET /v1/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-475218ee-11f6-4b10-b2dc-baae785e3d00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "d5a0cbb1-de97-4b1d-8763-244c9f8ad87c", "created_at": "2026-04-12T07:46:41.051928+00:00", "updated_at": "2026-04-12T07:46:41.072572+00:00", "description": null, "extra": {"a": "b"}, "links": [{"href": "http://localhost/v1/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c", "rel": "self"}, {"href": "http://localhost/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c/nodes", "rel": "self"}, {"href": "http://localhost/chassis/d5a0cbb1-de97-4b1d-8763-244c9f8ad87c/nodes", "rel": "bookmark"}]]} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_remove_uuid [0.041836s] ... 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-b52bf647-5a4b-4612-ba5a-e5cac2cfc45a 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_bad_requests_in_managed_state [0.071989s] ... 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-2afd90c4-aa24-4b68-a27c-5a4e70e07b45 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-4ee2f270-aba4-4cec-97fb-06f70325f577 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-3d259e51-de5c-47d5-9a1d-5a9300395cd2 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}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links [0.154885s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f6a3875-96bb-4498-9484-2b21164ce0b6 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": "2026-04-12T07:46:41.099215+00:00", "updated_at": "2026-04-12T07:46:41.098905+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-775381aa-6f7f-40b4-9e39-aa4b9096552c 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": "2026-04-12T07:46:41.099215+00:00", "updated_at": "2026-04-12T07:46:41.098905+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-db924e2b-3ef2-43f9-b957-a63571314cda 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": "2026-04-12T07:46:41.099215+00:00", "updated_at": "2026-04-12T07:46:41.098905+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_node.TestListNodes.test_detail_forbidden [0.089826s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-776da01b-fb2b-48e6-b49a-7df7f56bca0a 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_chassis.TestPatch.test_replace_multi [0.067736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba WITH [{'path': '/extra/foo2', 'value': 'new value', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4ceba600-ebb0-4c35-b440-a2b7409b4433 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e33c2e6c-9615-471d-98c5-dae3082eb5ba", "created_at": "2026-04-12T07:46:41.160007+00:00", "updated_at": "2026-04-12T07:46:41.180027+00:00", "description": "data-center-1-chassis", "extra": {"foo1": "bar1", "foo2": "new value", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba", "rel": "self"}, {"href": "http://localhost/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba/nodes", "rel": "bookmark"}]]} GET /v1/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f889e959-413a-4e10-ad84-fb11cdf71149 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e33c2e6c-9615-471d-98c5-dae3082eb5ba", "created_at": "2026-04-12T07:46:41.160007+00:00", "updated_at": "2026-04-12T07:46:41.180027+00:00", "description": "data-center-1-chassis", "extra": {"foo1": "bar1", "foo2": "new value", "foo3": "bar3"}, "links": [{"href": "http://localhost/v1/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba", "rel": "self"}, {"href": "http://localhost/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba/nodes", "rel": "self"}, {"href": "http://localhost/chassis/e33c2e6c-9615-471d-98c5-dae3082eb5ba/nodes", "rel": "bookmark"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_older_soft_ver [0.086571s] ... 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-4d23492d-d806-4fbe-ab8d-2b13f5ad58fb 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}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_links_public_url [0.064054s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0dd510fe-5263-4457-adba-3a5b83136a23 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": "2026-04-12T07:46:41.185558+00:00", "updated_at": "2026-04-12T07:46:41.185314+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-a363fa6e-4543-43bc-a8a5-9938eaa7ee55 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": "2026-04-12T07:46:41.185558+00:00", "updated_at": "2026-04-12T07:46:41.185314+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-013ecb55-3019-4508-ad0e-0868713b1685 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": "2026-04-12T07:46:41.185558+00:00", "updated_at": "2026-04-12T07:46:41.185314+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} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_replace_singular [0.072488s] ... 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-de50b77c-6ffa-4449-837e-66a8457c656c 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": "2026-04-12T07:46:41.229226+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-ab68ffa1-6ed7-4b0e-9f15-cbfc2489d080 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": "2026-04-12T07:46:41.229226+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"}]]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_bios_valid_soft_ver [0.055182s] ... 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-d70b23c0-569d-4aca-b876-4d75f027c7b9 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_instance_uuid [0.116531s] ... 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-0ca516a5-3615-4c76-954b-c2548e13ba4d 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": "2026-04-12T07:46:41.254040+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_conductor.TestListConductors.test_list [0.076172s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-faea44ea-d9f6-4b40-a81b-4e515d879d90 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}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_invalid_request [0.061418s] ... 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-d64ce22a-a2ad-4a24-a5dc-e086873931ee 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}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_detail [0.042924s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?detail=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0618bd41-d648-455d-802c-ed7f7aec722d 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": "2026-04-12T07:46:41.340037+00:00", "updated_at": "2026-04-12T07:46:41.339746+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": "2026-04-12T07:46:41.341474+00:00", "updated_at": "2026-04-12T07:46:41.341326+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}]} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_update_error [0.096716s] ... 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-4dafe91b-5636-40c1-9f4b-930d6a6699bd 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}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_list_with_invalid_api [0.043576s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-168ab496-fbf5-407e-b9dd-42e57696fe45 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_node.TestListNodes.test_detail_instance_uuid_project_match [0.126214s] ... 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-ef906b51-7f84-417c-b606-3515b34259ac 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": "2026-04-12T07:46:41.371725+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"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_chassis.TestPatch.test_update_not_found [0.074206s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/chassis/d9e1c0f3-79e5-42d8-bb35-a2b9345a6c0a WITH [{'path': '/extra/a', 'value': 'b', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e009d55c-39be-4215-a080-3f83ff0fbd56 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 d9e1c0f3-79e5-42d8-bb35-a2b9345a6c0a could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_conductor.TestListConductors.test_sort_key [0.047929s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?sort_key=hostname WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-19878665-7814-476a-9712-9339c21825d0 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": "205fe2d7-468c-445e-a252-fa3e2b22cd35", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/205fe2d7-468c-445e-a252-fa3e2b22cd35", "rel": "self"}, {"href": "http://localhost/conductors/205fe2d7-468c-445e-a252-fa3e2b22cd35", "rel": "bookmark"}], "alive": true}, {"hostname": "3e1b9875-70c5-493a-93c5-1506b582225b", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/3e1b9875-70c5-493a-93c5-1506b582225b", "rel": "self"}, {"href": "http://localhost/conductors/3e1b9875-70c5-493a-93c5-1506b582225b", "rel": "bookmark"}], "alive": true}, {"hostname": "4e25a152-dd34-42e3-86ea-5094f3e32ecd", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/4e25a152-dd34-42e3-86ea-5094f3e32ecd", "rel": "self"}, {"href": "http://localhost/conductors/4e25a152-dd34-42e3-86ea-5094f3e32ecd", "rel": "bookmark"}], "alive": true}, {"hostname": "8cf08c2a-7f4e-404a-94df-3c0d8be83039", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/8cf08c2a-7f4e-404a-94df-3c0d8be83039", "rel": "self"}, {"href": "http://localhost/conductors/8cf08c2a-7f4e-404a-94df-3c0d8be83039", "rel": "bookmark"}], "alive": true}, {"hostname": "cbd15ed9-6e9e-4636-90bf-9e9c185bd380", "conductor_group": "", "links": [{"href": "http://localhost/v1/conductors/cbd15ed9-6e9e-4636-90bf-9e9c185bd380", "rel": "self"}, {"href": "http://localhost/conductors/cbd15ed9-6e9e-4636-90bf-9e9c185bd380", "rel": "bookmark"}], "alive": true}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_older_soft_ver [0.122984s] ... 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-ac03a27d-a61d-489b-8a9e-b2069c7510cb 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_deploy_template.TestListDeployTemplates.test_collection_links [0.042497s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-baa07f77-9a5c-4a59-8526-d04a00318913 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": "ee048a65-66d4-474d-9a35-8c4362c9703d", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/ee048a65-66d4-474d-9a35-8c4362c9703d", "rel": "self"}, {"href": "http://localhost/deploy_templates/ee048a65-66d4-474d-9a35-8c4362c9703d", "rel": "bookmark"}]}, {"uuid": "2ba5aafa-4c5f-429a-9e27-814bce78edac", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/2ba5aafa-4c5f-429a-9e27-814bce78edac", "rel": "self"}, {"href": "http://localhost/deploy_templates/2ba5aafa-4c5f-429a-9e27-814bce78edac", "rel": "bookmark"}]}, {"uuid": "93d6431e-0a9a-4212-907a-7deb49794fed", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/93d6431e-0a9a-4212-907a-7deb49794fed", "rel": "self"}, {"href": "http://localhost/deploy_templates/93d6431e-0a9a-4212-907a-7deb49794fed", "rel": "bookmark"}]}], "next": "http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=93d6431e-0a9a-4212-907a-7deb49794fed"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_instance_uuid_project_not_match [0.072385s] ... 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-d234518f-f85d-4e5d-ba71-9dac3df37554 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.api.controllers.v1.test_conductor.TestListConductors.test_sort_key_invalid [0.034037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors?sort_key=alive WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-05d164b8-fa3f-4858-adcb-33dec2ad182b X-Openstack-Ironic-Api-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-6952e7e7-f9b8-4f84-8269-a3a1575da0d6 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_collection_links_custom_fields [0.043781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?fields=uuid,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c480cf9f-3dfd-42ec-96f1-81386706ffd2 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": "5814b8ce-b505-41f6-b2a7-4656d2383868", "links": [{"href": "http://localhost/v1/deploy_templates/5814b8ce-b505-41f6-b2a7-4656d2383868", "rel": "self"}, {"href": "http://localhost/deploy_templates/5814b8ce-b505-41f6-b2a7-4656d2383868", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "317464a8-036a-4142-adb7-89c8ef25c384", "links": [{"href": "http://localhost/v1/deploy_templates/317464a8-036a-4142-adb7-89c8ef25c384", "rel": "self"}, {"href": "http://localhost/deploy_templates/317464a8-036a-4142-adb7-89c8ef25c384", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "c7105192-adf3-4ff9-a392-2e0bfad34c16", "links": [{"href": "http://localhost/v1/deploy_templates/c7105192-adf3-4ff9-a392-2e0bfad34c16", "rel": "self"}, {"href": "http://localhost/deploy_templates/c7105192-adf3-4ff9-a392-2e0bfad34c16", "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=c7105192-adf3-4ff9-a392-2e0bfad34c16"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_boot_mode_uefi_valid_soft_ver [0.067602s] ... 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-f6b6f7f7-06d2-4678-8183-df178c7b5464 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_forbid_project_mismatch [0.055383s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?project=54321 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bace9609-0dfc-49df-8ba9-247c1dfce023 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_deploy_template.TestListDeployTemplates.test_collection_links_default_limit [0.057356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dc594284-3a09-4f9e-b606-036a8754e1ec 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": "7467dc6c-1cf8-45ef-9316-bcafac8efb6c", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/7467dc6c-1cf8-45ef-9316-bcafac8efb6c", "rel": "self"}, {"href": "http://localhost/deploy_templates/7467dc6c-1cf8-45ef-9316-bcafac8efb6c", "rel": "bookmark"}]}, {"uuid": "57fdb3c1-1d5f-4fb6-851f-20dbce876695", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/57fdb3c1-1d5f-4fb6-851f-20dbce876695", "rel": "self"}, {"href": "http://localhost/deploy_templates/57fdb3c1-1d5f-4fb6-851f-20dbce876695", "rel": "bookmark"}]}, {"uuid": "68af040e-387f-4600-995e-0eff13c82d54", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/68af040e-387f-4600-995e-0eff13c82d54", "rel": "self"}, {"href": "http://localhost/deploy_templates/68af040e-387f-4600-995e-0eff13c82d54", "rel": "bookmark"}]}], "next": "http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=68af040e-387f-4600-995e-0eff13c82d54"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_multi [0.126151s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/87b95f93-f3d3-43a4-8c79-017bf06c9bc8 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-10d14f50-d2c0-4810-bedf-bf7d3a75d6b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "87b95f93-f3d3-43a4-8c79-017bf06c9bc8", "created_at": "2026-04-12T07:46:41.527961+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/87b95f93-f3d3-43a4-8c79-017bf06c9bc8", "rel": "self"}, {"href": "http://localhost/deploy_templates/87b95f93-f3d3-43a4-8c79-017bf06c9bc8", "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_deploy_template.TestListDeployTemplates.test_detail_query [0.038733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f5665ed4-dfdf-458d-b6c1-e3fc8da51e7e 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": "06798f9d-7083-4dda-945a-ed7c912a1928", "created_at": "2026-04-12T07:46:41.612789+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/06798f9d-7083-4dda-945a-ed7c912a1928", "rel": "self"}, {"href": "http://localhost/deploy_templates/06798f9d-7083-4dda-945a-ed7c912a1928", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden [0.086077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d92e4cae-7978-45f1-b5bf-44d1901beac2 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": "2bc025b9-ca43-453d-af97-f3dd23ac24f1", "created_at": "2026-04-12T07:46:41.585528+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/2bc025b9-ca43-453d-af97-f3dd23ac24f1", "rel": "self"}, {"href": "http://localhost/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1/ports", "rel": "self"}, {"href": "http://localhost/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1/states", "rel": "self"}, {"href": "http://localhost/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1/volume", "rel": "self"}, {"href": "http://localhost/nodes/2bc025b9-ca43-453d-af97-f3dd23ac24f1/volume", "rel": "bookmark"}]}, {"uuid": "e2bfbc92-a669-430a-a683-2ecd99ab5105", "created_at": "2026-04-12T07:46:41.588246+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/e2bfbc92-a669-430a-a683-2ecd99ab5105", "rel": "self"}, {"href": "http://localhost/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105/ports", "rel": "self"}, {"href": "http://localhost/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105/states", "rel": "self"}, {"href": "http://localhost/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105/volume", "rel": "self"}, {"href": "http://localhost/nodes/e2bfbc92-a669-430a-a683-2ecd99ab5105/volume", "rel": "bookmark"}]}, {"uuid": "d595135a-0a93-4253-8053-15f1d73ceba0", "created_at": "2026-04-12T07:46:41.589977+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/d595135a-0a93-4253-8053-15f1d73ceba0", "rel": "self"}, {"href": "http://localhost/nodes/d595135a-0a93-4253-8053-15f1d73ceba0", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d595135a-0a93-4253-8053-15f1d73ceba0/ports", "rel": "self"}, {"href": "http://localhost/nodes/d595135a-0a93-4253-8053-15f1d73ceba0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d595135a-0a93-4253-8053-15f1d73ceba0/states", "rel": "self"}, {"href": "http://localhost/nodes/d595135a-0a93-4253-8053-15f1d73ceba0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d595135a-0a93-4253-8053-15f1d73ceba0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d595135a-0a93-4253-8053-15f1d73ceba0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d595135a-0a93-4253-8053-15f1d73ceba0/volume", "rel": "self"}, {"href": "http://localhost/nodes/d595135a-0a93-4253-8053-15f1d73ceba0/volume", "rel": "bookmark"}]}, {"uuid": "dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b", "created_at": "2026-04-12T07:46:41.591558+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/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b", "rel": "self"}, {"href": "http://localhost/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b/ports", "rel": "self"}, {"href": "http://localhost/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b/states", "rel": "self"}, {"href": "http://localhost/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b/volume", "rel": "self"}, {"href": "http://localhost/nodes/dcab037b-adcd-4f82-ba6a-f8b14ddf1f1b/volume", "rel": "bookmark"}]}, {"uuid": "55d55d1b-a8fb-4e1f-8c2d-e76b8075080d", "created_at": "2026-04-12T07:46:41.593067+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/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d", "rel": "self"}, {"href": "http://localhost/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d/ports", "rel": "self"}, {"href": "http://localhost/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d/states", "rel": "self"}, {"href": "http://localhost/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d/volume", "rel": "self"}, {"href": "http://localhost/nodes/55d55d1b-a8fb-4e1f-8c2d-e76b8075080d/volume", "rel": "bookmark"}]}, {"uuid": "394f0833-8ea6-4ac6-99d1-69980dd24db0", "created_at": "2026-04-12T07:46:41.595034+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/394f0833-8ea6-4ac6-99d1-69980dd24db0", "rel": "self"}, {"href": "http://localhost/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0/ports", "rel": "self"}, {"href": "http://localhost/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0/states", "rel": "self"}, {"href": "http://localhost/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0/volume", "rel": "self"}, {"href": "http://localhost/nodes/394f0833-8ea6-4ac6-99d1-69980dd24db0/volume", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean [0.110576s] ... 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-4900d69f-c1d2-473b-879e-08d64c08a6bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.15 {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_root_non_existent [0.058920s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/52d8f36e-9810-45a3-ab5d-a8011518ed69 WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-03bacec2-2929-4e4b-becd-69fc681ac3a0 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_check_steps_fail [0.055991s] ... 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-a5918045-49c7-41ec-8ffa-d072c761b54d 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_deploy_template.TestListDeployTemplates.test_detail_query_false [0.099579s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e142f453-8642-4199-a1f1-9c5a8711b863 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": "0d2cd232-5322-4d48-bdbb-a47e953bb192", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/0d2cd232-5322-4d48-bdbb-a47e953bb192", "rel": "self"}, {"href": "http://localhost/deploy_templates/0d2cd232-5322-4d48-bdbb-a47e953bb192", "rel": "bookmark"}]}]} GET /v1/deploy_templates?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0624f1a0-7eeb-47cd-b4a6-a49ae509e81d 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": "0d2cd232-5322-4d48-bdbb-a47e953bb192", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/0d2cd232-5322-4d48-bdbb-a47e953bb192", "rel": "self"}, {"href": "http://localhost/deploy_templates/0d2cd232-5322-4d48-bdbb-a47e953bb192", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_list_all_forbidden_no_project [0.100796s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f2507bd8-bdd0-4c2e-9b26-08a50660c092 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.TestPut.test_clean_disable_ramdisk [0.058536s] ... 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-49c700db-b0a0-471b-8f37-60319c5a4759 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.70 {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_sort_key_allowed [0.043402s] ... 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-5d041557-5f84-4938-b1f6-6d709580c552 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": "d961af46-ba42-4ff9-a166-745fbda3148b", "created_at": "2026-04-12T07:46:41.754566+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/d961af46-ba42-4ff9-a166-745fbda3148b", "rel": "self"}, {"href": "http://localhost/deploy_templates/d961af46-ba42-4ff9-a166-745fbda3148b", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "9d7ed5de-8e75-4a94-a819-7907235b8c2e", "created_at": "2026-04-12T07:46:41.752822+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9d7ed5de-8e75-4a94-a819-7907235b8c2e", "rel": "self"}, {"href": "http://localhost/deploy_templates/9d7ed5de-8e75-4a94-a819-7907235b8c2e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "55e443b4-7a57-438b-97d8-d1a1f4bb0d28", "created_at": "2026-04-12T07:46:41.751263+00:00", "updated_at": null, "name": "CUSTOM_DT3", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/55e443b4-7a57-438b-97d8-d1a1f4bb0d28", "rel": "self"}, {"href": "http://localhost/deploy_templates/55e443b4-7a57-438b-97d8-d1a1f4bb0d28", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_add_too_high_index_step_fail [0.105380s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/333ae71e-1f35-47db-aa07-926923fb856e 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-540e4abf-24c2-45b2-ad91-6ad75ec33eb1 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_and_fields [0.033926s] ... 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-d37e5405-2309-4a23-85c8-9e596e15d75d X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_query_false [0.072820s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b71d21d-ab7a-499f-b039-880d8a9ded4d 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-32a81789-4fdc-4b06-8a90-9f1697873dd5 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"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_disable_ramdisk_old_api [0.070548s] ... 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-a070426e-4b78-4203-8e53-4d8f8d76b074 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}"} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_detail_using_query_false_and_fields [0.036959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?detail=False&fields=steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c25a10c1-c2bd-481c-8958-aa559468c148 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/ac9986ba-b3eb-4e6f-be51-674baf846aeb", "rel": "self"}, {"href": "http://localhost/deploy_templates/ac9986ba-b3eb-4e6f-be51-674baf846aeb", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_foo [0.056679s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/4205556c-b5e9-4b96-9dc8-8704bbf168ef WITH [{'path': '/foo', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-092abe5f-2459-4eec-afe4-95babc45fd0c X-Openstack-Ironic-Api-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_deploy_template.TestListDeployTemplates.test_empty [0.040475s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fe5fa8b8-37fc-45eb-a66f-d1ae757bd3b5 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": []} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_no_cleansteps [0.075018s] ... 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-26abb0b6-561c-4c79-a101-4fdca5f42bd2 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}"} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_all_invalid_api_version [0.032139s] ... 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\"}"} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_custom_fields [0.048999s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?fields=uuid,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2ce507b-d68f-46de-9851-8a36f03acff3 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": "79392408-01ce-4869-9b94-df91137f1d04", "links": [{"href": "http://localhost/v1/deploy_templates/79392408-01ce-4869-9b94-df91137f1d04", "rel": "self"}, {"href": "http://localhost/deploy_templates/79392408-01ce-4869-9b94-df91137f1d04", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "98d33879-f4ee-42f6-bb2c-2d42fb8f6f61", "links": [{"href": "http://localhost/v1/deploy_templates/98d33879-f4ee-42f6-bb2c-2d42fb8f6f61", "rel": "self"}, {"href": "http://localhost/deploy_templates/98d33879-f4ee-42f6-bb2c-2d42fb8f6f61", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}, {"uuid": "7f35cb01-1478-4a75-bda2-6448387351d8", "links": [{"href": "http://localhost/v1/deploy_templates/7f35cb01-1478-4a75-bda2-6448387351d8", "rel": "self"}, {"href": "http://localhost/deploy_templates/7f35cb01-1478-4a75-bda2-6448387351d8", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_multi [0.108447s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/00535a30-761d-4357-b474-b9ff210f352b WITH [{'path': '/steps/1', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a4081d1c-fdbe-40ce-a9eb-b3e0b61cab2b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "00535a30-761d-4357-b474-b9ff210f352b", "created_at": "2026-04-12T07:46:41.916686+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/00535a30-761d-4357-b474-b9ff210f352b", "rel": "self"}, {"href": "http://localhost/deploy_templates/00535a30-761d-4357-b474-b9ff210f352b", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "priority": 10}, {"interface": "raid", "step": "create_configuration2", "args": {}, "priority": 10}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_snmpv3 [0.170507s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-58557e22-6f49-4518-85ee-13f9d4606db0 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": "2026-04-12T07:46:41.936829+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"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_collection_pagination_no_uuid [0.039553s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?fields=name&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7242486c-35d4-4645-884f-902c15ebe16b 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/a56cccc6-3bb1-4813-a6ff-4c3cb43dfa4f", "rel": "self"}, {"href": "http://localhost/deploy_templates/a56cccc6-3bb1-4813-a6ff-4c3cb43dfa4f", "rel": "bookmark"}]}, {"name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/6aa43049-2713-40c1-b654-2fdcfa84da78", "rel": "self"}, {"href": "http://localhost/deploy_templates/6aa43049-2713-40c1-b654-2fdcfa84da78", "rel": "bookmark"}]}], "next": "http://localhost/v1/deploy_templates?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=6aa43049-2713-40c1-b654-2fdcfa84da78"} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_custom_fields_invalid_fields [0.040922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/1f2f9cc9-fa7c-4d1e-b8f1-bbf72ebd37a9?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f464aae3-a29f-4f36-a8ba-bc5389b832f1 X-Openstack-Ironic-Api-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_deploy_template.TestPatch.test_remove_name [0.116097s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/0526728b-4240-4056-86dd-d3b8380fd0e8 WITH [{'path': '/name', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-195a37d4-2aff-45b9-8797-968ca72d88d5 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one [0.051563s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/5f5d4d74-4978-4331-abac-079f575f4681 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1b033af0-2edb-4257-8262-4b94436e86c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5f5d4d74-4978-4331-abac-079f575f4681", "created_at": "2026-04-12T07:46:42.076540+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/5f5d4d74-4978-4331-abac-079f575f4681", "rel": "self"}, {"href": "http://localhost/deploy_templates/5f5d4d74-4978-4331-abac-079f575f4681", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_property_fail [0.038060s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/dfa20ee2-f52a-43b7-abd4-dd2ada0e8af7 WITH [{'path': '/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-4cce0e7b-0f76-4787-aef8-6610683f5f9c X-Openstack-Ironic-Api-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_deploy_template.TestListDeployTemplates.test_get_one_custom_fields [0.048772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/4c5c86e0-6ff1-4b5d-9f5b-b95115b75b4c?fields=name,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ece57fb9-2f27-4217-8136-360b156d6f90 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/4c5c86e0-6ff1-4b5d-9f5b-b95115b75b4c", "rel": "self"}, {"href": "http://localhost/deploy_templates/4c5c86e0-6ff1-4b5d-9f5b-b95115b75b4c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_sort_key_allowed [0.173750s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?sort_key=resource_class WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a9c6fbfe-20cd-4928-9b27-8ea14caa0e98 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": "2873b5bc-d85b-453a-bb13-2cadff118953", "created_at": "2026-04-12T07:46:42.110754+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/2873b5bc-d85b-453a-bb13-2cadff118953", "rel": "self"}, {"href": "http://localhost/nodes/2873b5bc-d85b-453a-bb13-2cadff118953", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2873b5bc-d85b-453a-bb13-2cadff118953/ports", "rel": "self"}, {"href": "http://localhost/nodes/2873b5bc-d85b-453a-bb13-2cadff118953/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2873b5bc-d85b-453a-bb13-2cadff118953/states", "rel": "self"}, {"href": "http://localhost/nodes/2873b5bc-d85b-453a-bb13-2cadff118953/states", "rel": "bookmark"}]}, {"uuid": "39ea9b69-60e3-441b-9241-ed0f1c14c566", "created_at": "2026-04-12T07:46:42.102599+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/39ea9b69-60e3-441b-9241-ed0f1c14c566", "rel": "self"}, {"href": "http://localhost/nodes/39ea9b69-60e3-441b-9241-ed0f1c14c566", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/39ea9b69-60e3-441b-9241-ed0f1c14c566/ports", "rel": "self"}, {"href": "http://localhost/nodes/39ea9b69-60e3-441b-9241-ed0f1c14c566/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/39ea9b69-60e3-441b-9241-ed0f1c14c566/states", "rel": "self"}, {"href": "http://localhost/nodes/39ea9b69-60e3-441b-9241-ed0f1c14c566/states", "rel": "bookmark"}]}, {"uuid": "ed9445a8-f783-4abf-8363-9e633ca6cc0b", "created_at": "2026-04-12T07:46:42.095396+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/ed9445a8-f783-4abf-8363-9e633ca6cc0b", "rel": "self"}, {"href": "http://localhost/nodes/ed9445a8-f783-4abf-8363-9e633ca6cc0b", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ed9445a8-f783-4abf-8363-9e633ca6cc0b/ports", "rel": "self"}, {"href": "http://localhost/nodes/ed9445a8-f783-4abf-8363-9e633ca6cc0b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ed9445a8-f783-4abf-8363-9e633ca6cc0b/states", "rel": "self"}, {"href": "http://localhost/nodes/ed9445a8-f783-4abf-8363-9e633ca6cc0b/states", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_invalid_api_version [0.041503s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/cd710be2-4959-48b6-be2e-59f9afee2d64 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\"}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_fail [0.059542s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/68a4209d-9243-4e98-9221-ef7c99cfbad5 WITH [{'path': '/steps/1', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-68d5e2aa-763d-49e2-8919-f23288738522 X-Openstack-Ironic-Api-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.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_json [0.051773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/03172ab3-1dd3-40ee-b77b-340db8e8c686.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-badb448b-1c74-43e9-875f-8eea7ee0552b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "03172ab3-1dd3-40ee-b77b-340db8e8c686", "created_at": "2026-04-12T07:46:42.228493+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/03172ab3-1dd3-40ee-b77b-340db8e8c686", "rel": "self"}, {"href": "http://localhost/deploy_templates/03172ab3-1dd3-40ee-b77b-340db8e8c686", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_non_existent_step_property_fail [0.056033s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/7c018bec-e4a5-436b-9c2b-e40ba5f29c38 WITH [{'path': '/steps/0/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9aa3d7c2-ca3a-49e9-8c7a-524f112d6613 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_sort_key_not_allowed [0.121783s] ... 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-528a12e5-118f-4162-a12b-2693501985ee 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_deploy_template.TestListDeployTemplates.test_get_one_with_json_not_found [0.045509s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/179906d1-3c90-4724-8d35-8cc1af0adc9f.json WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5e4fa629-1c4a-4f15-b57d-f94ccf2d519f X-Openstack-Ironic-Api-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 179906d1-3c90-4724-8d35-8cc1af0adc9f.json could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_get_one_with_suffix [0.038678s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/ecf80c68-0f9b-4787-995f-02600c27be07 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-de95e366-1530-408d-aa16-da48bc76d6bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ecf80c68-0f9b-4787-995f-02600c27be07", "created_at": "2026-04-12T07:46:42.314491+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/ecf80c68-0f9b-4787-995f-02600c27be07", "rel": "self"}, {"href": "http://localhost/deploy_templates/ecf80c68-0f9b-4787-995f-02600c27be07", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_remove_only_step_fail [0.114494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/845115cc-80d7-41ff-836b-17cbd3a3a297 WITH [{'path': '/steps/0', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-988b17af-a1b8-4619-896b-2a81491b9634 X-Openstack-Ironic-Api-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_deploy_template.TestListDeployTemplates.test_links [0.049343s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-51891a78-f9c2-4666-9a24-eb74e89e1d20 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "79485ff4-b181-46a9-9ed6-eec9c3f64b92", "created_at": "2026-04-12T07:46:42.356427+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92", "rel": "self"}, {"href": "http://localhost/deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /v1/deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-38b605a3-e02d-40e4-b7cb-76b19a36a3a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "79485ff4-b181-46a9-9ed6-eec9c3f64b92", "created_at": "2026-04-12T07:46:42.356427+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92", "rel": "self"}, {"href": "http://localhost/deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} GET /deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-221388bb-0bc2-4234-89dc-93339e6b1776 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "79485ff4-b181-46a9-9ed6-eec9c3f64b92", "created_at": "2026-04-12T07:46:42.356427+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92", "rel": "self"}, {"href": "http://localhost/deploy_templates/79485ff4-b181-46a9-9ed6-eec9c3f64b92", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_many [0.051781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-27b473ab-39b0-4d20-91ed-6c60c4c9edec 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": "34597a0a-c40c-4e27-9eb3-99e2f966dc62", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/34597a0a-c40c-4e27-9eb3-99e2f966dc62", "rel": "self"}, {"href": "http://localhost/deploy_templates/34597a0a-c40c-4e27-9eb3-99e2f966dc62", "rel": "bookmark"}]}, {"uuid": "ca2ffb6c-8fe7-41d2-922c-78e306e281db", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/ca2ffb6c-8fe7-41d2-922c-78e306e281db", "rel": "self"}, {"href": "http://localhost/deploy_templates/ca2ffb6c-8fe7-41d2-922c-78e306e281db", "rel": "bookmark"}]}, {"uuid": "17802052-d8b6-4a2a-9bb9-4c812bfac1df", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/17802052-d8b6-4a2a-9bb9-4c812bfac1df", "rel": "self"}, {"href": "http://localhost/deploy_templates/17802052-d8b6-4a2a-9bb9-4c812bfac1df", "rel": "bookmark"}]}, {"uuid": "1fb5533f-eb9c-47ef-a856-ccb50a30fb10", "name": "CUSTOM_DT3", "links": [{"href": "http://localhost/v1/deploy_templates/1fb5533f-eb9c-47ef-a856-ccb50a30fb10", "rel": "self"}, {"href": "http://localhost/deploy_templates/1fb5533f-eb9c-47ef-a856-ccb50a30fb10", "rel": "bookmark"}]}, {"uuid": "6fdcfda0-9ae8-4543-841d-ed6eec48446b", "name": "CUSTOM_DT4", "links": [{"href": "http://localhost/v1/deploy_templates/6fdcfda0-9ae8-4543-841d-ed6eec48446b", "rel": "self"}, {"href": "http://localhost/deploy_templates/6fdcfda0-9ae8-4543-841d-ed6eec48446b", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query [0.155494s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bdc9fa62-0722-48f0-9f3e-fc291567691f 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": "2026-04-12T07:46:42.385582+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.TestPut.test_clean_with_runbook_disable_ramdisk [0.548419s] ... 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-56d936bc-23cb-4cb6-b4df-09dfa86fd623 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.106 {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_one [0.057527s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-88621dc3-fa60-4add-85a6-1973be03b5e7 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": "284c72f0-00c4-4ebd-aae6-62325c014a99", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/284c72f0-00c4-4ebd-aae6-62325c014a99", "rel": "self"}, {"href": "http://localhost/deploy_templates/284c72f0-00c4-4ebd-aae6-62325c014a99", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_and_fields [0.094869s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e01f2f80-d392-4f2b-b70e-7c765dc24cd2 X-Openstack-Ironic-Api-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.TestPut.test_clean_with_runbooks [0.106954s] ... 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-5d316214-a2d5-4d9e-baaf-7d872bd7ddf0 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_deploy_template.TestListDeployTemplates.test_sensitive_data_masked [0.093829s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/71a4539a-bc87-440b-9ac4-49d885abb7f6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fbe4fa84-52d6-44a8-9ea6-be4ebe205005 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "71a4539a-bc87-440b-9ac4-49d885abb7f6", "created_at": "2026-04-12T07:46:42.574379+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/71a4539a-bc87-440b-9ac4-49d885abb7f6", "rel": "self"}, {"href": "http://localhost/deploy_templates/71a4539a-bc87-440b-9ac4-49d885abb7f6", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": [], "password": "******"}, "priority": 10}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_clean_with_runbooks_unapproved [0.063092s] ... 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-debda6c8-b76c-4ce7-bc95-1a824102ebc9 X-Openstack-Ironic-Api-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_deploy_template.TestListDeployTemplates.test_sort_key [0.062411s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9b3d16ef-b97e-47e3-97d1-b39bf0230ea4 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": "3f5b6e9b-6e1d-4def-88e6-7a1da231f71c", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/3f5b6e9b-6e1d-4def-88e6-7a1da231f71c", "rel": "self"}, {"href": "http://localhost/deploy_templates/3f5b6e9b-6e1d-4def-88e6-7a1da231f71c", "rel": "bookmark"}]}, {"uuid": "9bcbe75d-e875-459c-b1ee-5fb1079f134f", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/deploy_templates/9bcbe75d-e875-459c-b1ee-5fb1079f134f", "rel": "self"}, {"href": "http://localhost/deploy_templates/9bcbe75d-e875-459c-b1ee-5fb1079f134f", "rel": "bookmark"}]}, {"uuid": "bf790472-1bde-480a-b823-b1a41a6623a3", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/bf790472-1bde-480a-b823-b1a41a6623a3", "rel": "self"}, {"href": "http://localhost/deploy_templates/bf790472-1bde-480a-b823-b1a41a6623a3", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_false_and_fields [0.138860s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?detail=False&fields=name WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-678b3fa8-86fa-4d4d-ba5a-4445018d0a73 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.TestPut.test_inject_nmi [0.061618s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/management/inject_nmi WITH {} GOT Response: 204 No Content Openstack-Request-Id: req-3c6dbfe1-9d99-4491-8bc4-0c93f7b9155f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.29 {0} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestListDeployTemplates.test_sort_key_allowed [0.059006s] ... 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-f9dfb890-5ace-478f-9e6b-d83dd9f59675 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": "39483919-1444-4b9c-92ac-962dc5b18bfd", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/39483919-1444-4b9c-92ac-962dc5b18bfd", "rel": "self"}, {"href": "http://localhost/deploy_templates/39483919-1444-4b9c-92ac-962dc5b18bfd", "rel": "bookmark"}]}, {"uuid": "d5e2931a-4c4d-4283-99fe-db8280fb4c21", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/deploy_templates/d5e2931a-4c4d-4283-99fe-db8280fb4c21", "rel": "self"}, {"href": "http://localhost/deploy_templates/d5e2931a-4c4d-4283-99fe-db8280fb4c21", "rel": "bookmark"}]}, {"uuid": "1fc919a5-f476-435d-ae8c-1aff543c9d50", "name": "CUSTOM_DT3", "links": [{"href": "http://localhost/v1/deploy_templates/1fc919a5-f476-435d-ae8c-1aff543c9d50", "rel": "self"}, {"href": "http://localhost/deploy_templates/1fc919a5-f476-435d-ae8c-1aff543c9d50", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_allowed [0.051900s] ... 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-d18e160e-9783-4d7d-957c-21f1c06e5695 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_detail_using_query_old_version [0.066392s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-05253324-656f-4c0e-8b60-c4407d7f31a8 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_deploy_template.TestListDeployTemplates.test_sort_key_invalid [0.058760s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c0e44efa-76d6-4b32-be13-5fc1ff319e04 X-Openstack-Ironic-Api-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-8c78c2ee-63a8-4a3e-a805-9697356fc4d0 X-Openstack-Ironic-Api-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-fd5d2ddf-f4e2-4802-b8c6-a0e38111ed69 X-Openstack-Ironic-Api-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_node.TestCheckCleanSteps.test__check_clean_steps_child_node [0.051203s] ... 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_node.TestCheckCleanSteps.test__check_clean_steps_child_node_list [0.053609s] ... 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) {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inject_nmi_not_supported [0.135698s] ... 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-bf7fac46-2582-4ed0-8f8f-7253bf556477 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_not_list [0.042296s] ... 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_node.TestCheckCleanSteps.test__check_clean_steps_step_args_value_invalid [0.043885s] ... 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) {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_inspect_abort_accepted_after_1_41 [0.090109s] ... 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-6234f4ec-0ace-4e7b-a11c-b8920227fe8b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.41 {0} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_interface_value_invalid [0.037616s] ... 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_deploy_template.TestPatch.test_remove_steps [0.630851s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/1fb6736d-f193-40f1-8849-e524f193e37c WITH [{'path': '/steps', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cdf1cf63-9455-4d15-964f-9a39fffcbf8f X-Openstack-Ironic-Api-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.TestCheckCleanSteps.test__check_clean_steps_step_key_invalid [0.029380s] ... 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_deploy_template.TestPatch.test_remove_uuid [0.076603s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/ca4450bc-6d4d-4cb3-aa71-84e530ce6e0d WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0fdb93e6-dd25-4a39-a10a-c18421efde6b X-Openstack-Ironic-Api-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.TestPut.test_inspect_abort_raises_before_1_41 [0.125039s] ... 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-3f95a723-8b28-462b-ad40-67a4ce4cf18c 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_min_length_step_value [0.068001s] ... 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_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_interface [0.028822s] ... 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_deploy_template.TestPatch.test_replace_duplicate_step [0.065768s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/780f0bd3-f8fa-441c-9899-8c06b94befe4 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-2a7e3d5c-d713-4154-ae66-a6b6facea5fd X-Openstack-Ironic-Api-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.TestPut.test_inspect_already_in_progress [0.073621s] ... 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-1226ed8f-3d95-4cce-bccd-71c6b70ad09e 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_key [0.060448s] ... 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_node.TestListNodes.test_detail_with_association_filter [0.464053s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?associated=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-074133c4-5390-4410-b6d8-36e76565e4d6 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": "495e8c13-9dff-4c6e-a0a7-3ba438150344", "created_at": "2026-04-12T07:46:43.148646+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": "832840e0-3f50-4748-b821-51bcbd1b5cc1", "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/495e8c13-9dff-4c6e-a0a7-3ba438150344", "rel": "self"}, {"href": "http://localhost/nodes/495e8c13-9dff-4c6e-a0a7-3ba438150344", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/495e8c13-9dff-4c6e-a0a7-3ba438150344/ports", "rel": "self"}, {"href": "http://localhost/nodes/495e8c13-9dff-4c6e-a0a7-3ba438150344/ports", "rel": "bookmark"}]}, {"uuid": "dc66ddbc-0a7a-400e-bda6-fa4d9d446a4f", "created_at": "2026-04-12T07:46:43.150313+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": "4b265860-1f8b-4956-bf3e-1993ac9a9187", "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/dc66ddbc-0a7a-400e-bda6-fa4d9d446a4f", "rel": "self"}, {"href": "http://localhost/nodes/dc66ddbc-0a7a-400e-bda6-fa4d9d446a4f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/dc66ddbc-0a7a-400e-bda6-fa4d9d446a4f/ports", "rel": "self"}, {"href": "http://localhost/nodes/dc66ddbc-0a7a-400e-bda6-fa4d9d446a4f/ports", "rel": "bookmark"}]}, {"uuid": "580024e4-0ec8-49c9-88b1-54b1378b42dd", "created_at": "2026-04-12T07:46:43.152118+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": "bbbe2ca4-250a-4f28-9e97-8c8ceffdec71", "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/580024e4-0ec8-49c9-88b1-54b1378b42dd", "rel": "self"}, {"href": "http://localhost/nodes/580024e4-0ec8-49c9-88b1-54b1378b42dd", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/580024e4-0ec8-49c9-88b1-54b1378b42dd/ports", "rel": "self"}, {"href": "http://localhost/nodes/580024e4-0ec8-49c9-88b1-54b1378b42dd/ports", "rel": "bookmark"}]}, {"uuid": "ff9669b6-bc9c-4760-9805-93dda4bca008", "created_at": "2026-04-12T07:46:43.157309+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": "e0cd7e13-5087-4316-b377-5179230d9402", "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/ff9669b6-bc9c-4760-9805-93dda4bca008", "rel": "self"}, {"href": "http://localhost/nodes/ff9669b6-bc9c-4760-9805-93dda4bca008", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ff9669b6-bc9c-4760-9805-93dda4bca008/ports", "rel": "self"}, {"href": "http://localhost/nodes/ff9669b6-bc9c-4760-9805-93dda4bca008/ports", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_empty_step_list_fail [0.096716s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/335d0c3f-793f-438b-b85d-9c3526df2f07 WITH [{'path': '/steps', 'op': 'replace', 'value': []}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-96e229a5-38ec-4009-a73c-99d454f69c91 X-Openstack-Ironic-Api-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.controllers.v1.test_node.TestPut.test_inspect_validation_failed_missing_parameter_value [0.086484s] ... 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-ae528dcc-16d3-4712-bafd-888bf516ca05 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestCheckCleanSteps.test__check_clean_steps_step_missing_step_value [0.057081s] ... 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_node.TestCheckCleanSteps.test__check_clean_steps_step_not_dict [0.047226s] ... 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_node.TestListNodes.test_detail_with_instance_uuid [0.058105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?instance_uuid=9c62b4e8-21d3-4855-971c-516c0163ad4b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22661180-4df6-4c9f-8071-88be8e192a97 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": "d75d2eae-52b7-4ac3-b2bb-9da974a8ec2c", "created_at": "2026-04-12T07:46:43.250351+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": "9c62b4e8-21d3-4855-971c-516c0163ad4b", "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/d75d2eae-52b7-4ac3-b2bb-9da974a8ec2c", "rel": "self"}, {"href": "http://localhost/nodes/d75d2eae-52b7-4ac3-b2bb-9da974a8ec2c", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/d75d2eae-52b7-4ac3-b2bb-9da974a8ec2c/ports", "rel": "self"}, {"href": "http://localhost/nodes/d75d2eae-52b7-4ac3-b2bb-9da974a8ec2c/ports", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_empty [0.037306s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-665913a9-e1a7-48ec-82e6-623546cf240b 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_node.TestPut.test_inspect_validation_failed_status_code [0.114087s] ... 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-5f71d665-7b25-4ea9-aa84-f835ca3b971a 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.085203s] ... 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-3e6fc865-8b6f-4869-aa5e-c39fb9e16a13 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"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_none [0.156108s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/25d59d1b-ec43-4859-9527-6664c1a45e97 WITH [{'path': '/name', 'op': 'replace', 'value': None}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-9a8d2cf7-683b-435c-adcc-7f239c560cb7 X-Openstack-Ironic-Api-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.TestPut.test_manage_from_adoptfail [0.053551s] ... 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-7d0a2746-b254-4ae9-82f3-73b990b43d4c 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_get_all_interface_fields_invalid_api_version [0.049081s] ... 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-7745d36b-5eff-4848-8b08-8f639ceede70 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_node.TestCheckCleanSteps.test__check_clean_steps_valid [0.147433s] ... 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) {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_manage_from_available [0.098685s] ... 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-77bd2314-6d53-48ba-81df-b1216645ccf0 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_node.TestCheckCleanSteps.test_check__check_steps_wrappers [0.080497s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_automated_clean_fields [0.096013s] ... 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-d8ac80b1-e916-4f3e-8390-523306c45011 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"}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_invalid_name_not_a_trait [0.164821s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/4d5b442f-ee5c-4364-b1ae-b579fc744740 WITH [{'path': '/name', 'op': 'replace', 'value': 'not-a-trait'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-50918f61-e11e-4f5e-a513-892ca83fc068 X-Openstack-Ironic-Api-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.TestPut.test_power_change_when_being_cleaned [0.077822s] ... 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-0e423740-bce6-43a5-a076-80372fda35b9 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-71ffba44-440a-4f49-8805-7bde8372b09e 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_boot_device [0.059105s] ... 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-81e771f5-6d06-4eeb-8f3b-42b2ff7ecb7a 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} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_associated [0.126201s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-ad4cb734-abde-415f-acf4-3054a37bfbe1 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node [0.054270s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 204 No Content Openstack-Request-Id: req-d18ac1a0-c1ab-446a-8dcc-3087797c5678 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_replace_invalid_name_too_long [0.142600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/4138ed7a-a2a8-45a4-aeb8-6804f7e47104 WITH [{'path': '/name', 'op': 'replace', 'value': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-578ce6cb-f6ee-438c-812d-e40d965e51a2 X-Openstack-Ironic-Api-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_node.TestListNodes.test_get_boot_device_by_name [0.115713s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/spam/management/boot_device WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-33bdf63f-207d-47d0-b322-51b062364522 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} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_invalid_state_request [0.128778s] ... 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-dba9506b-feb8-4d25-8524-c7c06585797e 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name [0.054585s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo.1 GOT Response: 204 No Content Openstack-Request-Id: req-d7477e80-e9e2-48a2-9e7e-18992fe0bc2c 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_boot_device_iface_not_supported [0.047864s] ... 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-572ee74c-8608-4a73-9a14-d74798bf29b4 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_deploy_template.TestPatch.test_replace_invalid_step_interface_fail [0.071863s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/aa7d6c71-7e18-4b38-8414-c31e8c6436a9 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-4b0000b4-5137-45ab-b07f-9c84332b5d56 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_collection_custom_fields [0.077743s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=uuid,instance_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8b3a0e29-71b9-4e8c-9dd5-3ea3a1880fbb 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": "105fbb48-42bb-4b2a-b25d-49a67c5e3de0", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/105fbb48-42bb-4b2a-b25d-49a67c5e3de0", "rel": "self"}, {"href": "http://localhost/nodes/105fbb48-42bb-4b2a-b25d-49a67c5e3de0", "rel": "bookmark"}]}, {"uuid": "bac6bce9-dec5-485d-9e6b-f09f3b1d4054", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/bac6bce9-dec5-485d-9e6b-f09f3b1d4054", "rel": "self"}, {"href": "http://localhost/nodes/bac6bce9-dec5-485d-9e6b-f09f3b1d4054", "rel": "bookmark"}]}, {"uuid": "d7c0f03d-f210-4025-b932-19dfb41bc240", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/d7c0f03d-f210-4025-b932-19dfb41bc240", "rel": "self"}, {"href": "http://localhost/nodes/d7c0f03d-f210-4025-b932-19dfb41bc240", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_by_name_unsupported [0.090922s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ec61e19d-08a4-40c7-a8a4-fe1dd78de606 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_by_name [0.138406s] ... 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-d157d57c-b1bf-4aa2-a25c-d31c9d7a7e45 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_custom_fields_as_list [0.062810s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=uuid&fields=instance_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-84359494-2a80-4cbf-90ba-6ab640ad7db9 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": "50c404e9-dd6b-4e91-a765-99116f3a89bc", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/50c404e9-dd6b-4e91-a765-99116f3a89bc", "rel": "self"}, {"href": "http://localhost/nodes/50c404e9-dd6b-4e91-a765-99116f3a89bc", "rel": "bookmark"}]}, {"uuid": "7e5b0143-fce2-4935-95a3-053d228fa356", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/7e5b0143-fce2-4935-95a3-053d228fa356", "rel": "self"}, {"href": "http://localhost/nodes/7e5b0143-fce2-4935-95a3-053d228fa356", "rel": "bookmark"}]}, {"uuid": "62e3e9bb-8092-4e1d-bb78-6aeb58bf50f8", "instance_info": {"configdrive": "******", "image_url": "******", "foo": "bar"}, "links": [{"href": "http://localhost/v1/nodes/62e3e9bb-8092-4e1d-bb78-6aeb58bf50f8", "rel": "self"}, {"href": "http://localhost/nodes/62e3e9bb-8092-4e1d-bb78-6aeb58bf50f8", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_multi [0.139049s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/d2f76e97-1a6a-4b19-b459-9016f3fbd6ca 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-baab7624-46f2-490b-a782-e1d9fa887871 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d2f76e97-1a6a-4b19-b459-9016f3fbd6ca", "created_at": "2026-04-12T07:46:43.866561+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/d2f76e97-1a6a-4b19-b459-9016f3fbd6ca", "rel": "self"}, {"href": "http://localhost/deploy_templates/d2f76e97-1a6a-4b19-b459-9016f3fbd6ca", "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.TestDelete.test_delete_node_by_name_with_json [0.090933s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo.json GOT Response: 204 No Content Openstack-Request-Id: req-8aee4a37-f2e5-488e-9503-edfd1e231e91 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.TestPut.test_power_state_by_name_unsupported [0.129309s] ... 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-4f5d905b-d433-410d-9ebb-d4143e26f378 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_fields_for_nova [0.088176s] ... 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-fac4b147-aa5a-4174-bf48-3f25f5ff5edf 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": "290e8a13-b8c3-4f65-9660-2bab1cc224d7", "power_state": null, "target_power_state": null, "provision_state": "available", "target_provision_state": null, "last_error": null, "maintenance": false, "instance_uuid": "5f5ac3e5-0d26-4284-94e9-02aa3fbca627", "traits": ["CUSTOM_RAID5", "CUSTOM_TRAIT1"], "resource_class": null, "links": [{"href": "http://localhost/v1/nodes/290e8a13-b8c3-4f65-9660-2bab1cc224d7", "rel": "self"}, {"href": "http://localhost/nodes/290e8a13-b8c3-4f65-9660-2bab1cc224d7", "rel": "bookmark"}]}, {"uuid": "a0f06901-a51d-49b7-8d5f-72f1503cd830", "power_state": null, "target_power_state": null, "provision_state": "available", "target_provision_state": null, "last_error": null, "maintenance": false, "instance_uuid": "9086d946-a39b-41c8-84ee-380ba8e7e51b", "traits": ["CUSTOM_RAID5", "CUSTOM_TRAIT1"], "resource_class": null, "links": [{"href": "http://localhost/v1/nodes/a0f06901-a51d-49b7-8d5f-72f1503cd830", "rel": "self"}, {"href": "http://localhost/nodes/a0f06901-a51d-49b7-8d5f-72f1503cd830", "rel": "bookmark"}]}, {"uuid": "0d663ded-711a-49b6-a37a-9d7cfc82b097", "power_state": null, "target_power_state": null, "provision_state": "available", "target_provision_state": null, "last_error": null, "maintenance": false, "instance_uuid": "dbcf48bd-2a54-4959-8755-f41a0814732b", "traits": ["CUSTOM_RAID5", "CUSTOM_TRAIT1"], "resource_class": null, "links": [{"href": "http://localhost/v1/nodes/0d663ded-711a-49b6-a37a-9d7cfc82b097", "rel": "self"}, {"href": "http://localhost/nodes/0d663ded-711a-49b6-a37a-9d7cfc82b097", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode [0.064913s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 202 Accepted Openstack-Request-Id: req-f43bbe49-c84a-4a4c-a378-79051fe3cc2e 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_replace_name_already_exist [0.090216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/75d14332-ec55-430f-a24b-c30602cdf8b2 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-d0f9a307-0cc0-4ab8-9e6d-ee4a6b0591d8 X-Openstack-Ironic-Api-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 75d14332-ec55-430f-a24b-c30602cdf8b2 already exists.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_non_existent_step_fail [0.045769s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/10f1c213-a4a3-42b8-98bd-4bb35699b283 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-7e2e32e6-fa8a-4d7f-994e-23c4279f1cae X-Openstack-Ironic-Api-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_node.TestListNodes.test_get_collection_pagination_no_uuid [0.085247s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fields=name&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0561dec2-8061-466e-bc6c-27b34bc6dd28 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/579e458e-9ef6-4379-8161-1f43e639d1f7", "rel": "self"}, {"href": "http://localhost/nodes/579e458e-9ef6-4379-8161-1f43e639d1f7", "rel": "bookmark"}]}, {"name": null, "links": [{"href": "http://localhost/v1/nodes/ac05193d-7456-4a9d-8cdf-8bac3d2b681f", "rel": "self"}, {"href": "http://localhost/nodes/ac05193d-7456-4a9d-8cdf-8bac3d2b681f", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=ac05193d-7456-4a9d-8cdf-8bac3d2b681f"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_maintenance_mode_by_name [0.074423s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo/maintenance GOT Response: 202 Accepted Openstack-Request-Id: req-a334a595-a451-4c64-bc51-2aeb42150bf8 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.TestPut.test_power_state_power_on_invalid_timeout_invalid_soft_ver [0.117137s] ... 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-68250710-4db5-40f6-895f-9e9fa288449a 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}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_replace_step_invalid_interface [0.060915s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/d7040fd5-2a9f-405b-a04f-eddd9efb1c53 WITH [{'path': '/steps/0/interface', 'op': 'replace', 'value': 'foo'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e12cd0e0-df3d-49fb-8d7f-a77933586539 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field [0.088887s] ... 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-f73ec8e7-4d65-4a4e-871f-1e0361c56e04 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_deploy_template.TestPatch.test_update_by_id [0.089217s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/9ffef823-4c46-4c8c-b0f1-90bfc4410b07 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-497da4ff-255e-463a-b4d1-50b76b406979 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9ffef823-4c46-4c8c-b0f1-90bfc4410b07", "created_at": "2026-04-12T07:46:44.198206+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9ffef823-4c46-4c8c-b0f1-90bfc4410b07", "rel": "self"}, {"href": "http://localhost/deploy_templates/9ffef823-4c46-4c8c-b0f1-90bfc4410b07", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_conductor_field_invalid_api_version [0.055657s] ... 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-1751825b-4dc8-4314-b124-f3b3dbf8118f 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_invalid_timeout_no_ver [0.130076s] ... 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-fd25f02b-e875-4128-9ee4-cd6ba686ed95 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}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_id_invalid_api_version [0.046912s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/77735c90-85c1-4235-a6a5-275af9dbd500 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_node.TestListNodes.test_get_conductor_group_fields [0.049842s] ... 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-23fe3a14-6fc5-4e64-9b70-be70804303fa 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.066688s] ... 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-1dd24ec4-7ee7-4b83-8f57-cd9fe8ec448b 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_node.TestPut.test_power_state_power_on_invalid_timeout_valid_soft_ver [0.113687s] ... 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-c2bda14f-df19-4150-a6c4-cd93e192a698 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}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name [0.114100s] ... 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-e7edb6b6-545a-48a6-b273-b420a568e7e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7f8b363e-19f2-4aa5-8a02-fd2778630f4f", "created_at": "2026-04-12T07:46:44.319976+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/7f8b363e-19f2-4aa5-8a02-fd2778630f4f", "rel": "self"}, {"href": "http://localhost/deploy_templates/7f8b363e-19f2-4aa5-8a02-fd2778630f4f", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "apply_configuration", "args": {"foo": "bar"}, "priority": 42}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_invalid_soft_ver [0.045261s] ... 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-455dfc1c-7adb-49ae-b430-bfb2a0183545 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.26 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information [0.082025s] ... 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-7f393ea3-7e3b-4ca5-8332-e2d2b8cfae8f 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"}} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_no_ver [0.047103s] ... 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-f3be2c49-d1fb-4b67-8eff-06940386e204 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_update_by_name_old_api_version [0.083079s] ... 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\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_no_timeout_valid_soft_ver [0.060324s] ... 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-a948c162-74eb-4498-b497-d023a26ec526 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_console_information_by_name [0.109345s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/spam/states/console WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-640181f4-19e1-453a-ac5b-08abd2fc1d56 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_deploy_template.TestPatch.test_update_by_name_with_json [0.113115s] ... 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-147a8642-8920-4f6e-a6af-53b7b1a7afc9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "96373d32-194d-409c-9241-794501cca440", "created_at": "2026-04-12T07:46:44.530568+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/96373d32-194d-409c-9241-794501cca440", "rel": "self"}, {"href": "http://localhost/deploy_templates/96373d32-194d-409c-9241-794501cca440", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_node_not_found [0.482520s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3f461861-54fe-4236-907e-b9d24942133f 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_invalid_soft_ver [0.081703s] ... 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-4e1e6c76-af58-46d0-a29d-92cd450fe27a 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_console_information_console_disabled [0.073427s] ... 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-a1a98d3f-b49f-43f4-8bdf-2a42bb8fcaa3 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} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_by_name_with_json_not_found [0.052569s] ... 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-b08678b2-ffae-44ff-a5b5-d24cafca51d8 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_no_ver [0.041691s] ... 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-551fa79a-e8a5-4892-921e-c3add9409915 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.TestDelete.test_delete_node_not_found_by_name [0.065755s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-02046d39-888b-4124-9620-a6048bae0d90 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_power_on_valid_timeout_valid_soft_ver [0.040337s] ... 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-70fae799-ae73-4ca9-8e1d-37c88105a32c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.27 {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_invalid_name [0.072448s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/52a062c7-2db0-4ac5-bceb-88aed61d9b98 WITH [{'path': '/name', 'value': 'aa:bb_cc', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f81cfa92-054e-468a-b8cc-c6b62704b13d X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_console_information_not_supported [0.084226s] ... 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-d15c56f9-eb6c-4727-9924-bd2fd675a2b5 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_invalid_soft_ver [0.048591s] ... 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-1a188dfb-9979-43a3-a378-a3ffc9e183f5 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_node.TestDelete.test_delete_node_not_found_by_name_unsupported [0.083714s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/foo GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ca95f4f5-b2e4-480f-ad42-c6998e5d7385 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_deploy_template.TestPatch.test_update_name_custom_trait [0.059230s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/07b72a34-b9c2-46d5-8a29-c37a5ae552f7 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-06b896d4-9499-4d70-bcd8-1ebe3cf541bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "07b72a34-b9c2-46d5-8a29-c37a5ae552f7", "created_at": "2026-04-12T07:46:44.747841+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/07b72a34-b9c2-46d5-8a29-c37a5ae552f7", "rel": "self"}, {"href": "http://localhost/deploy_templates/07b72a34-b9c2-46d5-8a29-c37a5ae552f7", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_invalid_timeout_no_ver [0.063381s] ... 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-e1c5ad73-9fc3-4942-a24d-5489b02c52aa 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_custom_fields_invalid_api_version [0.116455s] ... 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-f6a601f2-7c6c-47b1-b182-b9b025788723 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_node.TestPut.test_power_state_soft_power_off_invalid_timeout_valid_soft_ver [0.055339s] ... 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-44d8d5a3-3641-4f60-a3cd-b51f4ab936ac 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}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_name_standard_trait [0.092564s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/9c24b6a7-a450-4402-8a92-eab3ac58ce06 WITH [{'path': '/name', 'value': 'HW_CPU_X86_VMX', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2c2f2cde-4361-4334-afc8-046905a324f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9c24b6a7-a450-4402-8a92-eab3ac58ce06", "created_at": "2026-04-12T07:46:44.808825+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/9c24b6a7-a450-4402-8a92-eab3ac58ce06", "rel": "self"}, {"href": "http://localhost/deploy_templates/9c24b6a7-a450-4402-8a92-eab3ac58ce06", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_portgroup_subresource [0.130793s] ... 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-e0686674-4755-410d-9deb-40074b89e336 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_custom_fields_invalid_fields [0.057483s] ... 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-980aab88-b3f1-449f-b2aa-a9eba8a673e6 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_invalid_soft_ver [0.053796s] ... 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-11617510-257b-4148-a888-5031d5e2e503 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}"} {3} ironic.tests.unit.api.controllers.v1.test_deploy_template.TestPatch.test_update_not_found [0.059900s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/3899d5ed-4697-4fe0-a982-c7a3ba4421fb WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-12413c00-8031-46bd-9e27-0e2a9a543338 X-Openstack-Ironic-Api-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 3899d5ed-4697-4fe0-a982-c7a3ba4421fb could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_ports_subresource [0.105613s] ... 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-d58c5632-b7a9-45a1-bca4-b7fd5f5f1159 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.TestPut.test_power_state_soft_power_off_no_timeout_no_ver [0.072664s] ... 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-781e5ab3-8481-4765-8b26-49e0c40ae0a3 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_driver.TestListDrivers.test_driver_properties_hidden_in_lower_version [0.064879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2b551634-7551-4222-ba17-59f8e0d8ea49 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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_description_field [0.119626s] ... 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-9e8ca86a-9c86-4b08-9583-56c8a950454b 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_node.TestDelete.test_delete_ports_subresource_no_port_id [0.036504s] ... 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-bf8473c0-34f0-45b5-973d-62bd8c1df1bb 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_no_timeout_valid_soft_ver [0.055010s] ... 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-b7295004-ab75-4bbb-900a-74c13a45e89f 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_node.TestDelete.test_delete_volume_connectors_subresource [0.043021s] ... 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-b6e17a9d-8ea7-48d7-95ef-1f68748991dd X-Openstack-Ironic-Api-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_driver.TestListDrivers.test_driver_type_hidden_in_lower_version [0.117218s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2e428bbc-df1c-4b3e-8cda-b7c3433487ec 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"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_invalid_soft_ver [0.066216s] ... 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-bc60abac-a6c8-4e3b-8db3-3df82a02d0eb 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_indicator_state [0.112416s] ... 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-a80365e6-913c-4888-9459-8d2f2fe61dc6 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"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_connectors_subresource_no_connector_id [0.070272s] ... 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-13a64a8b-75de-4193-851e-1483bd04fb0e X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestDelete.test_delete_volume_targets_subresource [0.046962s] ... 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-c8c79734-fd44-4b7d-952a-6cdde9ae248d X-Openstack-Ironic-Api-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.TestPut.test_power_state_soft_power_off_valid_timeout_no_ver [0.068436s] ... 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-7dc2053d-9651-4c05-9c7d-383105c2630d 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_indicator_state_iface_not_supported [0.061559s] ... 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-10ce50be-218b-415d-86c1-7750eb191109 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_driver.TestListDrivers.test_driver_vendor_passthru_async [0.100128s] ... 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-50f0941e-045a-4b60-a614-43da5632e8a8 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_indicator_state_versioning [0.059517s] ... 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-b2a35670-78e6-48dd-8fbb-3dd1dd80dd12 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"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_get_child_node [0.070978s] ... 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-2c449f6c-2516-440c-bd46-18f40c65a083 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"children": ["fcb4b7da-abc6-476f-96a4-701bc86ed7c6"], "links": {"href": "http://localhost/v1/nodes?parent_node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "children"}} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_power_state_soft_power_off_valid_timeout_valid_soft_ver [0.093392s] ... 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-45055418-962c-42fb-ace6-e4f427d2ccd8 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_node.TestNodeChildrenTestCase.test_list_node_children_by_single_node [0.058550s] ... 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-7aaf1f55-13ef-46c9-b823-e860d384f5fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"children": ["e94fe39a-32a7-4799-a871-7d07c6af6040", "a553080d-0a68-4214-833e-dcd27740257c"], "links": {"href": "http://localhost/v1/nodes?parent_node=1be26c0b-03f2-4d2e-ae87-c02d7f33c123", "rel": "children"}} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_delete [0.110482s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/drivers/fake-hardware-type/vendor_passthru/do_test GOT Response: 202 Accepted Openstack-Request-Id: req-a4b2e50f-29f1-462d-b38b-92efbfe1f149 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_node.TestNodeChildrenTestCase.test_list_nodes [0.058610s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1426f8b1-b3d6-4d8a-80af-704726d9e23f 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"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provide_from_manage [0.095241s] ... 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-41a91a3b-a223-49d3-956c-9ec735356ea5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.4 {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_driver_not_found [0.061825s] ... 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-a69c3a72-b9e4-42f4-a17f-d9238c492f4c 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_lessee_field [0.142754s] ... 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-057cc2ea-ec72-4932-8705-565b9317d124 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"}]} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_get [0.067372s] ... 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-5d444b22-7af6-4358-bbb0-1e5a2403ca79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 "foo" {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_method_not_found [0.033544s] ... 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-3413b99b-e14a-4190-89b3-c42f7ac437b1 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_node.TestNodeChildrenTestCase.test_list_nodes_cannot_see_children_if_not_owned [0.116986s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?parent_node=500df92c-2f9d-4b0e-bb23-32391833e050 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9ef7fcc7-fcfd-46f3-87ea-028f2d8a156d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"nodes": []} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_already_in_progress [0.110096s] ... 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-6408ba6f-35cd-4144-9515-77d3481aac2d 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_network_interface_fields [0.105020s] ... 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-4145b3da-4575-4c61-ad36-bdb176bd2be6 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"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes_ignores_parent_if_include_children_indicated [0.093387s] ... 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-dc9f3b57-3899-4217-971a-059bc6fcc351 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": "d1cacd6c-8d90-468c-a9ff-7e65569c0028", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "not-yoda", "links": [{"href": "http://localhost/v1/nodes/d1cacd6c-8d90-468c-a9ff-7e65569c0028", "rel": "self"}, {"href": "http://localhost/nodes/d1cacd6c-8d90-468c-a9ff-7e65569c0028", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_methods [0.105237s] ... 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-c28d36de-3049-4609-9685-341dd74216c3 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-99cd845d-a9c7-425a-b83d-bb0c5395f625 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"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_already_in_state [0.106308s] ... 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-a69f211e-698f-432b-9b90-24242c6479d0 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_network_interface_fields_invalid_api_version [0.128624s] ... 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-3302edc6-451d-4b09-be68-e49c5358542c 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_put [0.064357s] ... 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-d38db4b3-c6f3-4611-aa1c-52b3bac44e25 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.TestPut.test_provision_by_name [0.054306s] ... 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-93cbcc20-b090-4e9e-8586-3c46c05ef7d0 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.TestPut.test_provision_by_name_unsupported [0.042124s] ... 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-7beb886f-5d90-4400-9a89-c4d0ce91e4cb 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_driver_vendor_passthru_sync [0.052366s] ... 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-5ae4f2f4-cedc-4d15-aa8e-a78fe1aa91d8 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"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes_lists_empty_for_specific_parent [0.151449s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?parent_node=9be14c73-4bfa-4021-a5b6-f6c1ce1f5f9d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0149517d-832a-4ee3-8c2a-767f3b73bac5 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_driver.TestListDrivers.test_drivers [0.062053s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8c56b5ff-507c-43df-9d36-5458553cccd0 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-094acaa3-37f2-4d95-93c5-d355fad6e303 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-ed1ae36c-4a25-4ee6-8e82-304f367eef3e 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-72cf284e-5fdb-4f1a-8ed2-252c0ca9a1f0 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-96a7955c-a4de-4311-b3ba-459f9849d920 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.TestPut.test_provision_deploy [0.084062s] ... 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-4daf1e55-70db-4e0d-b529-ca6452f5af1d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.73 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor [0.191959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor=rocky.rocks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-630a962b-d0c3-4fc7-a638-68716e523b5d 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-efd944f8-5ec4-474d-bdbf-e80912b2e181 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": "93036717-041f-48df-9284-fbfb642caaba", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/93036717-041f-48df-9284-fbfb642caaba", "rel": "self"}, {"href": "http://localhost/nodes/93036717-041f-48df-9284-fbfb642caaba", "rel": "bookmark"}]}, {"uuid": "590b2bad-9ef6-4f0d-af27-7c67163581d5", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/590b2bad-9ef6-4f0d-af27-7c67163581d5", "rel": "self"}, {"href": "http://localhost/nodes/590b2bad-9ef6-4f0d-af27-7c67163581d5", "rel": "bookmark"}]}]} GET /v1/nodes?conductor=fake.conductor WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8ff85ef8-ba44-44a0-a2d5-598f03191448 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": "590b2bad-9ef6-4f0d-af27-7c67163581d5", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/590b2bad-9ef6-4f0d-af27-7c67163581d5", "rel": "self"}, {"href": "http://localhost/nodes/590b2bad-9ef6-4f0d-af27-7c67163581d5", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields [0.076186s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?fields=name,hosts WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d580953e-8db4-455c-88f4-f11577f38533 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_node.TestNodeChildrenTestCase.test_list_nodes_with_children_only_parent [0.115836s] ... 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-3037963e-cf5e-42ce-a814-fe21193dce2f 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": "e5bbdf24-6cc2-4682-8163-c6d4b8604ac5", "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.TestPut.test_provision_invalid_state_request [0.069792s] ... 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-31ac2f22-39fc-458f-8da2-5fa9128783cc 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeChildrenTestCase.test_list_nodes_with_include_children [0.061296s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?include_children=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-90d4681e-8826-4388-9046-9b2ffd40ff0e 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": "c33af35b-080f-468f-98c1-dd8929c7e17d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "not-yoda", "links": [{"href": "http://localhost/v1/nodes/c33af35b-080f-468f-98c1-dd8929c7e17d", "rel": "self"}, {"href": "http://localhost/nodes/c33af35b-080f-468f-98c1-dd8929c7e17d", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_false [0.078898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?fields=name,hosts&detail=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8592759b-2aa6-42db-af7e-f948025d9dc7 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.TestPut.test_provision_locked_with_correct_state [0.074640s] ... 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-2b1b44e8-ce29-4396-be3b-7e7a9cf1305e 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_collection_custom_fields_with_detail_true [0.032907s] ... 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-cc2b0daf-c30f-44e8-a97e-aa97a5a1d841 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_group [0.141939s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor_group=group1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c546f68c-3eb7-4469-bb43-2d63699d82f9 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": "ed238f0e-523b-4aaa-ae99-9a762746d31d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d", "rel": "self"}, {"href": "http://localhost/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d", "rel": "bookmark"}]}]} GET /v1/nodes?conductor_group=group2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7487f55f-d756-4aab-8417-e679625dfcc9 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": "77cfc15a-b498-4fde-a20d-c17c79e530e7", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7", "rel": "self"}, {"href": "http://localhost/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7", "rel": "bookmark"}]}]} GET /v1/nodes/detail?conductor_group=group1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a17dab28-e367-4e65-8682-be7ef7cd64f2 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": "ed238f0e-523b-4aaa-ae99-9a762746d31d", "created_at": "2026-04-12T07:46:45.899044+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/ed238f0e-523b-4aaa-ae99-9a762746d31d", "rel": "self"}, {"href": "http://localhost/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d/ports", "rel": "self"}, {"href": "http://localhost/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d/states", "rel": "self"}, {"href": "http://localhost/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d/volume", "rel": "self"}, {"href": "http://localhost/nodes/ed238f0e-523b-4aaa-ae99-9a762746d31d/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail?conductor_group=group2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-062bade3-4134-4c4d-b 4ac-2739c078f8c4 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": "77cfc15a-b498-4fde-a20d-c17c79e530e7", "created_at": "2026-04-12T07:46:45.906623+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/77cfc15a-b498-4fde-a20d-c17c79e530e7", "rel": "self"}, {"href": "http://localhost/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7/ports", "rel": "self"}, {"href": "http://localhost/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7/states", "rel": "self"}, {"href": "http://localhost/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7/volume", "rel": "self"}, {"href": "http://localhost/nodes/77cfc15a-b498-4fde-a20d-c17c79e530e7/volume", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeFirmwareComponent.test_get_all_firmware_components [0.074959s] ... 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-a73123bb-efa4-4e37-99d7-9b17e73b5027 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": "2026-04-12T07:46:45.976203+00:00", "updated_at": null, "component": "BIOS", "initial_version": "v1.0.0", "current_version": "v1.0.0", "last_version_flashed": null}, {"created_at": "2026-04-12T07:46:45.972429+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_driver.TestListDrivers.test_drivers_collection_invalid_custom_fields [0.040313s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?fields=name,invalid WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f218b0e0-7b40-4f9e-aa03-abd7b1a4626d 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_node_in_maintenance_fail [0.077488s] ... 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-7e806032-c76a-4088-92c4-ac87c697d2af 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestNodeFirmwareComponent.test_wrong_version_get_all_firmware_components_old_version [0.049374s] ... 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\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_detail_bad_version [0.061722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=True WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e56da3c4-d854-4c90-affb-f5b93cc7764d 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_node.TestListNodes.test_get_nodes_by_conductor_group_not_allowed [0.128539s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor_group=group1 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-146f5cbb-6a18-4a94-bf63-41723a294d1f 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-984095de-acbb-4d14-a851-32bb7540a2b6 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_driver.TestListDrivers.test_drivers_detail_bad_version_false [0.075515s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=False WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-b68f6dbb-e60d-449d-bd31-1042b09f8ba0 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.TestPut.test_provision_rescue_empty_password [0.109315s] ... 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-cf93a62e-82d0-4f38-84df-5396cb5faa68 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_node.TestTraits.test_add_single_trait [0.123012s] ... 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-8befefcc-04af-448e-ab27-827ccdf87b86 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_driver.TestListDrivers.test_drivers_get_one_not_found [0.045185s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/nope WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0ea471f2-b1f4-4514-8669-698ab520f5e1 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_conductor_no_valid_host [0.125591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor=like.shadows WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f430476a-cc62-45a9-9504-9bb2b444cf1b 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-a81548f5-5f1f-45c9-8eac-3197f3974826 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-fe2e0c70-af06-4f42-9289-c538d66101a0 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_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_base_interfaces [0.056727s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e8c6e4d8-2f4f-4be6-bab8-8790bccf255e 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_network_interface": null, "enabled_network_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_deploy_interface": "direct", "enabled_deploy_interfaces": ["direct", "ansible"], "default_boot_interface": null, "enabled_boot_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_power_interface": null, "enabled_power_interfaces": []} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d1713e94-3142-48f4-b369-05c3100c9b92 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-fa5c719c-c535-4de5-98bc-d6819e2928af 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.TestTraits.test_add_single_trait_fails_if_node_locked [0.080822s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits/CUSTOM_3 WITH {} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-62cef697-cca9-422b-9190-b052258bfe10 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_allowed_states [0.114342s] ... 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-26e8fa6d-a477-4f44-bbc1-8e3699eae960 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-d7a6cbfb-dde7-4bfb-b260-02ae19496723 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-ad0efaa3-208b-4da1-8efd-45b100954f95 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-92c8fa27-fb9b-4eec-a9b7-16b740a0c8ec 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_conductor_not_allowed [0.049210s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?conductor=rocky.rocks WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-417361eb-ab92-4642-9aa6-4abb5dfa73bf 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_driver.TestListDrivers.test_drivers_get_one_ok_dynamic_latest_interfaces [0.078618s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bdac77b6-6390-4105-ac89-b8d516d81d37 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_rescue_interface": null, "enabled_rescue_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_storage_interface": null, "enabled_storage_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_deploy_interface": "direct", "enabled_deploy_interfaces": ["direct", "ansible"], "default_boot_interface": null, "enabled_boot_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_power_interface": null, "enabled_power_interfaces": [], "default_firmware_interface": null, "enabled_firmware_interfaces": []} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bdc42c5f-eba8-43ab-9dde-47d951373423 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-cce20150-b38e-410c-9d49-2ff8d030604f 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.TestTraits.test_add_single_trait_fails_if_node_not_found [0.071442s] ... 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-a1406dee-1144-4e8e-9673-9b90cefb0b4b 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_no_active_conductor [0.031471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-81663f31-1681-4fd7-bf4c-ba2a62bf903e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"drivers": []} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_in_disallowed_states [0.124965s] ... 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-963d496f-e246-4f01-9d65-7537ada13eb2 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-6e077f70-6cf0-4a14-bab5-af16f368927a 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-458f0aa5-90a5-4d91-97c1-08f2300cdd85 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-8be45eef-216f-4519-a09d-fd0f210b5991 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_value [0.044967s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?type=working WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3c47070f-99b4-48d2-a89d-b6342e3a2a1f 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_description [0.114925s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?description_contains=cat WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0a3820ac-5725-4066-8d36-c3c4fae3b124 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": "22f1898e-8ccc-4611-bbd4-5b83cd9fae3c", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/22f1898e-8ccc-4611-bbd4-5b83cd9fae3c", "rel": "self"}, {"href": "http://localhost/nodes/22f1898e-8ccc-4611-bbd4-5b83cd9fae3c", "rel": "bookmark"}]}]} GET /v1/nodes?description_contains=dog WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-06964460-5f89-427b-b781-6991f7d4e6a3 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": "c03a438b-f940-4bd6-974f-d7a8791d407e", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/c03a438b-f940-4bd6-974f-d7a8791d407e", "rel": "self"}, {"href": "http://localhost/nodes/c03a438b-f940-4bd6-974f-d7a8791d407e", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_max_trait_limit [0.096954s] ... 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-86a893c5-5198-46f9-a055-840198c78cf9 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_bad_version [0.056017s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?type=classic WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-1a60fd45-00f1-4cf9-af91-60eb6aa55895 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_node.TestListNodes.test_get_nodes_by_driver [0.068893s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?driver=ipmi WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3ea02616-58e1-45b7-adfd-9aa453f18095 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": "f8f7571f-6fa8-4923-a105-466968811ce0", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/f8f7571f-6fa8-4923-a105-466968811ce0", "rel": "self"}, {"href": "http://localhost/nodes/f8f7571f-6fa8-4923-a105-466968811ce0", "rel": "bookmark"}]}]} GET /v1/nodes?driver=fake-hardware WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8ab793cc-e80d-4997-957e-707532ceb4eb 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": "8c9247f2-4b36-4438-b90a-e2fb737690de", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/8c9247f2-4b36-4438-b90a-e2fb737690de", "rel": "self"}, {"href": "http://localhost/nodes/8c9247f2-4b36-4438-b90a-e2fb737690de", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_type_filter_classic [0.065654s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?type=classic WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e79c6ddf-d4c5-46c8-bdc1-edf5051f5d68 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.30 {"drivers": []} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_driver_invalid_api_version [0.067093s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?driver=fake WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-3937f96e-f5cb-4ce1-93bf-81494585640e 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_driver.TestListDrivers.test_drivers_type_filter_dynamic [0.069688s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?type=dynamic WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8fb15162-7d05-498c-bba7-532e0cf16558 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"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_add_single_trait_fails_with_bad_version [0.156869s] ... 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_get_nodes_by_fault [0.134784s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fault=power failure WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ca31070c-1dae-4eb9-bc04-4df82ed228cb 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": "80d3ba27-3f28-4910-8d64-2eb523c3afa5", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5", "rel": "self"}, {"href": "http://localhost/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5", "rel": "bookmark"}]}]} GET /v1/nodes?fault=clean failure WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a8aec96f-1f18-421a-97fc-33d6f1ce80ff 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": "c2b78c46-0272-4e15-b25a-ede79ae4c3d0", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0", "rel": "self"}, {"href": "http://localhost/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0", "rel": "bookmark"}]}]} GET /v1/nodes/detail?fault=power failure WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-067cd18d-53e0-4269-982b-afec93d58953 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": "80d3ba27-3f28-4910-8d64-2eb523c3afa5", "created_at": "2026-04-12T07:46:46.641567+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/80d3ba27-3f28-4910-8d64-2eb523c3afa5", "rel": "self"}, {"href": "http://localhost/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5/ports", "rel": "self"}, {"href": "http://localhost/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5/states", "rel": "self"}, {"href": "http://localhost/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5/volume", "rel": "self"}, {"href": "http://localhost/nodes/80d3ba27-3f28-4910-8d64-2eb523c3afa5/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail?fault=clean failure WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-997991cd-1373-4e4b-93fc-ff64de39fdb6 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": "c2b78c46-0272-4e15-b25a-ede79ae4c3d0", "created_at": "2026-04-12T07:46:46.643573+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/c2b78c46-0272-4e15-b25a-ede79ae4c3d0", "rel": "self"}, {"href": "http://localhost/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0/ports", "rel": "self"}, {"href": "http://localhost/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0/states", "rel": "self"}, {"href": "http://localhost/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0/volume", "rel": "self"}, {"href": "http://localhost/nodes/c2b78c46-0272-4e15-b25a-ede79ae4c3d0/volume", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_rescue_no_password [0.311156s] ... 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-a61dadb8-d8fa-4c80-9b39-ebf3c8d0b6bb 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_fault_not_allowed [0.047656s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fault=power failure WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-293641ce-ca47-45ed-b3d4-4ba340872bd3 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-c1e4ca46-8bde-4102-872a-a7d79202762c 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_node.TestPut.test_provision_unexpected_rescue_password [0.045253s] ... 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-d8bb0cf0-c405-4cb5-8fd0-178339054566 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic [0.172898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7a51f3c1-07d9-4013-aa9b-9a071fafbf40 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-2c5a14f1-17a9-40c8-808e-21e94f97bc68 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-6ee9986e-df8b-4ddd-bf6b-a5a27dad5afe 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-3c5b8916-28dc-4fac-9fc7-236ca0c3a826 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-f39572c2-27c8-4d73-b2b3-71c51f1a6962 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.TestTraits.test_add_single_trait_rejects_bad_trait [0.172906s] ... 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-45195e50-b733-4684-b639-e402ecdafa21 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_get_nodes_by_fault_with_invalid_fault [0.055435s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?fault=somefake WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d362282c-944a-4191-a659-51d52bd3dcc7 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-7ee5fdec-2165-45be-84f0-f9287d207543 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_driver [0.053842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?driver=test WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d0627bd4-3d7d-4178-9222-cc62b20b586d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.16 {"nodes": []} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_allowed_states [0.104012s] ... 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-c83310c1-d5b6-49c4-b8ac-18b04b97037c 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-c7824801-4703-460c-80f8-1a9c481c36b9 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-f26a26ed-ddbd-4e14-baab-b3883b1ccd44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed [0.103735s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4177e022-0c9f-480c-a699-175233b7ae62 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_network_interface": null, "enabled_network_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_deploy_interface": "direct", "enabled_deploy_interfaces": ["direct", "ansible"], "default_boot_interface": null, "enabled_boot_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_power_interface": null, "enabled_power_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_network_interface": null, "enabled_network_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_deploy_interface": null, "enabled_deploy_interfaces": [], "default_boot_interface": null, "enabled_boot_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_power_interface": null, "enabled_power_interfaces": []}]} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-29746abb-1b46-4d6b-add4-d1fc5fb560e2 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-83cc59d1-d2be-47c8-870f-de0f7f49763d 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-a66777c5-72ae-4ab7-a99f-38fff2e8c06c 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-dbf068c2-10c4-4f36-9bdf-1389ab802d e6 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.TestTraits.test_add_single_trait_rejects_too_long_trait [0.196006s] ... 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-de5fca5e-bad0-449c-9c3d-c2bb0f875dd4 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_unrescue_in_disallowed_states [0.146781s] ... 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-62d83025-423c-418e-bfba-3bdb61b4fb88 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-ff11eb5a-fc2a-42de-844c-cf25ab0a7628 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-b1e64805-2ea7-4d61-9fe3-3f0b21f3b8f1 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-5536f75e-36cc-4c51-aec0-28d3f915eeef 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-6caf37ad-16ef-4235-b4ad-9a7993ba4b37 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_node.TestPut.test_provision_with_cleansteps_not_clean [0.064440s] ... 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-2bd752dd-6e5f-4d04-a6bd-d621aaab8e65 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_node.TestTraits.test_delete_all_traits [0.136945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits GOT Response: 204 No Content Openstack-Request-Id: req-025077dc-2dd0-4f98-bf39-2ead44c35be9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_configdrive_not_active [0.061047s] ... 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-b0da8180-9ef4-417c-8cf0-a5094c11cf5f 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_delete_all_traits_fails_with_bad_version [0.113665s] ... 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-b1017e71-43ef-44a6-b288-ef9d03ff1b00 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy [0.118482s] ... 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-5785d31c-79d3-468c-aeee-0334a8df6c75 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_nodes_by_invalid_provision_state [0.410719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?provision_state=test WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-52d423f7-32fa-4c4c-9ec1-6075a7fb4344 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_drivers_with_dynamic_detailed_storage_interface [0.412164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-df4e944f-d6f4-42f0-b6c6-e3ba7f1b39cf 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_rescue_interface": null, "enabled_rescue_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_storage_interface": null, "enabled_storage_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_deploy_interface": "direct", "enabled_deploy_interfaces": ["direct", "ansible"], "default_boot_interface": null, "enabled_boot_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_power_interface": null, "enabled_power_interfaces": [], "default_firmware_interface": null, "enabled_firmware_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_rescue_interface": null, "enabled_rescue_interfaces": [], "default_network_interface": null, "enabled_network_interfaces": [], "default_storage_interface": null, "enabled_storage_interfaces": [], "default_inspect_interface": null, "enabled_inspect_interfaces": [], "default_management_interface": null, "enabled_management_interfaces": [], "default_deploy_interface": null, "enabled_deploy_interfaces": [], "default_boot_interface": null, "enabled_boot_interfaces": [], "default_console_interface": null, "enabled_console_interfaces": [], "default_raid_interface": null, "enabled_raid_interfaces": [], "default_vendor_interface": null, "enabled_vendor_interfaces": [], "default_power_interface": null, "enabled_power_interfaces": [], "default_firmware_interface": null, "enabled_firmware_interfaces": []}]} GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cbbd3f39-dd28-4211-8990-5e0e970c28f5 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-142d69aa-25c8-4d83-a68e-f6ab8fb32756 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- 342bdc0b-b1fa-49ba-a465-9294027dafd0 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-632f0930-9d1d-4687-88c5-565ed0df3c61 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.TestTraits.test_delete_all_traits_with_chassis [0.079070s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits GOT Response: 204 No Content Openstack-Request-Id: req-bee55b3f-6b54-46a3-a989-d7338426869c 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_driver.TestListDrivers.test_get_custom_fields_invalid_api_version [0.067985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers?fields=name,hosts WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-dd2f0b2b-90dc-4428-8d91-9482cde408a5 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-00a39b2c-07a5-41e4-8368-5be9a07047c5 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_resource_class [0.101214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?resource_class=test WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b47b599c-d203-499b-b19c-75037598ed61 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_node.TestPut.test_provision_with_deploy_after_deployfail [0.113939s] ... 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-d59621c9-32dc-4418-b65d-de8c75f4f183 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_node.TestTraits.test_delete_trait [0.069077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits/CUSTOM_1 GOT Response: 204 No Content Openstack-Request-Id: req-7f094c30-d7a8-4aef-a064-494d0d1b4f60 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_driver.TestListDrivers.test_get_one_custom_fields [0.054191s] ... 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-16db1e03-eae0-4bc4-a923-a9ff0c6086ab 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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_invalid_resource_class_detail [0.062492s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?resource_class=test WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0bb9bbd3-cf80-4b8f-b467-fb4eedb92ef5 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_node.TestPut.test_provision_with_deploy_configdrive [0.066755s] ... 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-8e39880a-95a9-4c1b-87b7-52c93cef98d7 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_driver.TestListDrivers.test_get_one_invalid_custom_fields [0.041457s] ... 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-e75de272-14ce-40ee-8715-4246209003fc 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.TestTraits.test_delete_trait_fails_if_node_locked [0.082822s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits/CUSTOM_1 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-c08e03c9-0bdf-4d7a-89ed-1f1e9210e706 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict [0.053592s] ... 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-8bfc850c-8eff-46e6-bcce-63da4cc750e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.56 {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links [0.054091s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-63e2dc14-bd6a-4e89-8e68-badbfd715ac1 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-b1bb2e98-cb0b-436e-bd38-185a304a34b2 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-247e4eab-3499-41eb-9a38-f47edaaf8f64 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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_lessee [0.115937s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?lessee=project1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-69051f64-329d-4b66-a0ce-63860f372843 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": "46f5d7ce-9d68-476c-8443-f6926e2f1f23", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23", "rel": "self"}, {"href": "http://localhost/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23", "rel": "bookmark"}]}]} GET /v1/nodes?lessee=project2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e905bdac-b453-4094-8028-3d04d7a181ea 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": "d5ba5f16-5603-4e36-ac5b-2401f496f0b7", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7", "rel": "self"}, {"href": "http://localhost/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7", "rel": "bookmark"}]}]} GET /v1/nodes/detail?lessee=project1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6e7f1329-9db4-4bb3-82bd-45a56478f2da 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": "46f5d7ce-9d68-476c-8443-f6926e2f1f23", "created_at": "2026-04-12T07:46:47.469026+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/46f5d7ce-9d68-476c-8443-f6926e2f1f23", "rel": "self"}, {"href": "http://localhost/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23/ports", "rel": "self"}, {"href": "http://localhost/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23/states", "rel": "self"}, {"href": "http://localhost/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/46f5d7ce-9d68-476c-8443-f6926e2f1f23/volume", "rel": "self"}, {"href": "http://localhost/nodes/46f5d7ce-9d68-476c- 8443-f6926e2f1f23/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail?lessee=project2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab2ca46a-74ed-4e43-9347-9046059c1b6d 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": "d5ba5f16-5603-4e36-ac5b-2401f496f0b7", "created_at": "2026-04-12T07:46:47.470737+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/d5ba5f16-5603-4e36-ac5b-2401f496f0b7", "rel": "self"}, {"href": "http://localhost/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7/ports", "rel": "self"}, {"href": "http://localhost/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7/states", "rel": "self"}, {"href": "http://localhost/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7/volume", "rel": "self"}, {"href": "http://localhost/nodes/d5ba5f16-5603-4e36-ac5b-2401f496f0b7/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_links_public_url [0.050692s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-hardware-type WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b05e6ac-d2a1-4800-80f1-8214d1f67d45 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-6906824c-1956-4acd-bd2e-a02f35ae8175 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-1608e0f4-95b9-438d-817b-5aa4ac81238c 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.TestTraits.test_delete_trait_fails_if_node_not_found [0.079417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits/CUSTOM_1 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4916a6a9-683b-4e20-8514-6baad430df88 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_as_dict_all_fields [0.086612s] ... 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-05c37509-e9cb-41f7-915b-fc4b0c7371ca 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_nodes_by_lessee_not_allowed [0.050457s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?lessee=project1 WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-ddffc8b0-7666-4d63-b328-39568bae3116 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-bd754a81-5cb3-4dba-9352-831622e40a1b 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties [0.050859s] ... 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-a3a628fa-062e-4a78-bdfc-a9d466657e3a 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.TestTraits.test_delete_trait_fails_if_trait_not_found [0.054075s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/traits/CUSTOM_12 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-78eb1fa1-819e-445b-8da9-946f0887d6b2 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_invalid_type [0.077347s] ... 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-6243ade9-50ce-4c72-93f7-090ff8c9c8a6 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_cached [0.062521s] ... 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-ccec1ecf-ce57-4c3f-a35e-76ba4909695b 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-f865d462-1748-4203-ba85-483667085fd2 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-18248085-6641-47bc-976e-614a0b6947cb 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.TestTraits.test_delete_trait_fails_with_bad_version [0.080636s] ... 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-d46f156f-5d11-449f-870c-b2a62583f9ff 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner [0.114176s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?owner=fred WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-779dd5f2-1d8e-4ecb-a2b9-2f468b27c2e0 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": "79a3fcc4-f0e6-4ee1-b45f-4186e30f267c", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c", "rel": "self"}, {"href": "http://localhost/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c", "rel": "bookmark"}]}]} GET /v1/nodes?owner=bob WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f6a55473-d942-4ac3-b135-1a2f76bc804a 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": "cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2", "rel": "self"}, {"href": "http://localhost/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2", "rel": "bookmark"}]}]} GET /v1/nodes/detail?owner=fred WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fac9cc14-8523-463f-ad64-a1f3e950b2fd 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": "79a3fcc4-f0e6-4ee1-b45f-4186e30f267c", "created_at": "2026-04-12T07:46:47.642236+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/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c", "rel": "self"}, {"href": "http://localhost/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c/ports", "rel": "self"}, {"href": "http://localhost/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c/states", "rel": "self"}, {"href": "http://localhost/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c/volume", "rel": "self"}, {"href": "http://localhost/nodes/79a3fcc4-f0e6-4ee1-b45f-4186e30f267c/volume", "rel": "bookmark"}]}]} GET /v1/nodes/detail?owner=bob WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-770e89f2-a6fa-4381-871b-4634e8cd699c 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": "cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2", "created_at": "2026-04-12T07:46:47.652920+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/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2", "rel": "self"}, {"href": "http://localhost/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2", "rel": "bookmark"}], "conductor": "fake.conductor", "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2/ports", "rel": "self"}, {"href": "http://localhost/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2/states", "rel": "self"}, {"href": "http://localhost/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2/volume", "rel": "self"}, {"href": "http://localhost/nodes/cc8442e8-cd19-4e94-9f7b-86ed3fa9bfc2/volume", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_iface_not_supported [0.053691s] ... 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-eaad6bcb-f38d-4972-9a6b-18be5ae68252 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_not_base64 [0.072355s] ... 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-74e714db-b95d-4c52-bca8-72b724ce4b90 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_owner_not_allowed [0.043646s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?owner=fred WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-57b5b13a-58bf-4f7e-859b-dff1590f1f3b 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-f769d48a-7118-461a-8af6-ee143a23d4e4 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}"} {3} ironic.tests.unit.api.controllers.v1.test_driver.TestListDrivers.test_raid_logical_disk_properties_older_version [0.038272s] ... 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-af673933-486b-421a-9c45-06e351dbc08d 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_configdrive_url [0.069049s] ... 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-e16a7066-b9c4-4901-af4d-0998bf951892 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.TestAttachDetachVif.test_vif_attach [0.049401s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': '240b75f6-b93f-4e4b-b743-83664de1728c'} GOT Response: 204 No Content Openstack-Request-Id: req-202fa8f0-f573-4ec5-aa48-d59ed32454b8 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_node.TestListNodes.test_get_nodes_by_provision_state [0.077402s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?provision_state=available WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e6c46477-c522-486f-82bb-0ebc6ae922ef 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": "1d70e473-528a-4ca1-905b-7e3219e8e0ec", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1d70e473-528a-4ca1-905b-7e3219e8e0ec", "rel": "self"}, {"href": "http://localhost/nodes/1d70e473-528a-4ca1-905b-7e3219e8e0ec", "rel": "bookmark"}]}]} GET /v1/nodes?provision_state=deploying WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-073cbe9a-61b3-4257-ae51-cfa5b6e4fc78 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": "c1f7f771-be8a-4056-8c61-b436e68e760e", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "deploying", "name": null, "links": [{"href": "http://localhost/v1/nodes/c1f7f771-be8a-4056-8c61-b436e68e760e", "rel": "self"}, {"href": "http://localhost/nodes/c1f7f771-be8a-4056-8c61-b436e68e760e", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits [0.143146s] ... 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-ba414b29-917a-40e5-8188-4cb67b48fc64 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"]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_by_node_name [0.050269s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/node-39/vifs WITH {'id': '81382e53-b2ec-4345-894d-4fae21624d67'} GOT Response: 204 No Content Openstack-Request-Id: req-42d70b2c-3943-47dc-a2c1-8683874ecb05 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_deploy_steps [0.074372s] ... 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-763cf817-6eb9-4c6f-86c0-37b7461ed26a 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_nodes_by_provision_state_not_allowed [0.053533s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?provision_state=test WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-e243729c-15c8-4cdf-aae8-4e7090f37a1f 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_conductor_unavailable [0.041935s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/node-39/vifs WITH {'id': '1d6e139a-8b7d-48df-ac72-23a232ab7cde'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-16a630b9-470e-44e9-b88a-82e0634fad00 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_node.TestTraits.test_get_all_traits_fails_with_bad_version [0.086320s] ... 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-d2535a60-e0e2-471f-9246-2f8568f17ca8 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_deploy_deploy_steps_fail [0.075086s] ... 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-7fbeac54-c188-498d-95ce-a38f0e22bc81 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}"} {0} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_get_all_traits_fails_with_node_not_found [0.068865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/badname/traits WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-227a0acd-8b10-4861-ab53-5317ba280856 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.TestAttachDetachVif.test_vif_attach_invalid_vif_id [0.104673s] ... 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-e4da021b-9947-47ef-be11-94ce09414baf 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild [0.064814s] ... 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-6122f93d-03fe-45c1-84df-921e4f56fe7d 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_node.TestTraits.test_no_add_single_trait_via_body [0.058208s] ... 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-5db64bf3-a1da-4dde-8f74-e8cafb3735b3 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_get_nodes_by_resource_class [0.149657s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?resource_class=foo WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-422a9133-e5e7-40db-bee6-674c258a9a66 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": "027f2cb3-ad3c-470d-b74e-1a2a916770cd", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/027f2cb3-ad3c-470d-b74e-1a2a916770cd", "rel": "self"}, {"href": "http://localhost/nodes/027f2cb3-ad3c-470d-b74e-1a2a916770cd", "rel": "bookmark"}]}]} GET /v1/nodes?resource_class=bar WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93f4458a-70a1-4a86-bffd-75884e2ecec5 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": "cb37a576-4d73-4d84-89a3-282b12b7a5d7", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/cb37a576-4d73-4d84-89a3-282b12b7a5d7", "rel": "self"}, {"href": "http://localhost/nodes/cb37a576-4d73-4d84-89a3-282b12b7a5d7", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_no_vif_id [0.099830s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'bad_id': '3dd2c807-22cb-4779-8d11-ac0672a65fa3'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-d94f2d1a-68bc-4ed8-bc54-649de17e377f 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_configdrive [0.106932s] ... 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-023e3d65-95c0-4f87-b36d-729ea503dd7f 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_node.TestTraits.test_no_add_single_trait_via_body_2 [0.071764s] ... 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-37ff3910-ee3a-4ea9-8e6b-8756f789a2e4 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_node_locked [0.073616s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': '1d14b57a-c0fb-4fc8-af6a-7ce09e43fc7a'} GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-82d8e589-4e51-41bd-9c24-179e3b419c5a 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_node.TestTraits.test_set_all_traits [0.062854s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'traits': ['CUSTOM_3']} GOT Response: 204 No Content Openstack-Request-Id: req-4f286822-b7b7-4104-8927-dfbef6d9e40a 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.TestAttachDetachVif.test_vif_attach_node_not_found [0.045105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/doesntexist/vifs WITH {'id': '3961d838-53f5-4c46-9ab2-9516c0feb7fc'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-03cf5976-595d-44e1-bb48-7321c10f5599 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid [0.076844s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': 'ccbf5dce-a7e5-4c29-a60d-dbe380ded90a', 'port_uuid': 'port-uuid', 'portgroup_uuid': 'portgroup-uuid'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-31a8999a-96d8-430d-962f-de9b20475d71 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_nodes_by_resource_class_detail [0.266683s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?resource_class=foo WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2f81722-9b3d-4f98-b183-7651e8e3eb50 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": "bb40c88a-4479-420d-bff2-3cb4b7d63fb9", "created_at": "2026-04-12T07:46:48.215490+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/bb40c88a-4479-420d-bff2-3cb4b7d63fb9", "rel": "self"}, {"href": "http://localhost/nodes/bb40c88a-4479-420d-bff2-3cb4b7d63fb9", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/bb40c88a-4479-420d-bff2-3cb4b7d63fb9/ports", "rel": "self"}, {"href": "http://localhost/nodes/bb40c88a-4479-420d-bff2-3cb4b7d63fb9/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/bb40c88a-4479-420d-bff2-3cb4b7d63fb9/states", "rel": "self"}, {"href": "http://localhost/nodes/bb40c88a-4479-420d-bff2-3cb4b7d63fb9/states", "rel": "bookmark"}]}]} GET /v1/nodes/detail?resource_class=bar WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e362709-1cb9-45b4-889a-2c4e0709eb0c 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": "ca419dca-8801-4a29-a513-0cd407f1e91c", "created_at": "2026-04-12T07:46:48.217764+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/ca419dca-8801-4a29-a513-0cd407f1e91c", "rel": "self"}, {"href": "http://localhost/nodes/ca419dca-8801-4a29-a513-0cd407f1e91c", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ca419dca-8801-4a29-a513-0cd407f1e91c/ports", "rel": "self"}, {"href": "http://localhost/nodes/ca419dca-8801-4a29-a513-0cd407f1e91c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ca419dca-8801-4a29-a513-0cd407f1e91c/states", "rel": "self"}, {"href": "http://localhost/nodes/ca419dca-8801-4a29-a513-0cd407f1e91c/states", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_attach_port_uuid_and_portgroup_uuid_old [0.100264s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs WITH {'id': '7e8506ff-2b99-42f5-99cc-bdd5140893df', 'port_uuid': 'port-uuid', 'portgroup_uuid': 'portgroup-uuid'} GOT Response: 204 No Content Openstack-Request-Id: req-1921d909-d5da-41ca-9498-680263d60a15 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_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version [0.084832s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?resource_class=fake WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-d054c616-7d12-4488-9a5f-de837238caad 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.TestAttachDetachVif.test_vif_detach [0.089572s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/65494e6b-0980-4a4e-93a3-77fa6c0390f1 GOT Response: 204 No Content Openstack-Request-Id: req-1314b721-abd4-492d-bcc0-c06ce761e636 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_node.TestListNodes.test_get_nodes_by_resource_class_invalid_api_version_detail [0.079972s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?resource_class=fake WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-f23df404-4829-4c18-994e-6a5e21319145 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_node.TestPut.test_provision_with_rebuild_deploy_steps [0.404343s] ... 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-0ca2823f-765c-483d-9a04-cb8d567a1d24 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_nodes_by_traits_not_allowed [0.048187s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?traits=CUSTOM_TRAIT_1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-09cb1140-65bc-4544-ae0f-a814636060db X-Openstack-Ironic-Api-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.TestAttachDetachVif.test_vif_detach_by_node_name [0.068429s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/node-39/vifs/d81b35b8-9fbd-4611-8dea-c21a3e11d63d GOT Response: 204 No Content Openstack-Request-Id: req-6a07463c-cb06-4ef1-b0fe-e6d85d57095c 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_node.TestListNodes.test_get_nodes_by_traits_not_allowed_detail [0.041874s] ... 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-acdf2f31-d8c5-41fc-98fb-43ffc92ad108 X-Openstack-Ironic-Api-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.TestAttachDetachVif.test_vif_detach_node_locked [0.052362s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vifs/71f30e85-9856-49aa-8fdd-4bd64437e2c2 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-7caa1097-aa82-4603-99c6-f3f9092e82a5 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_rebuild_unsupported_configdrive [0.105253s] ... 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-4ba41789-8a2a-4526-8aad-6ab830d1704a 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one [0.053743s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03e2b8b0-2d64-429b-be9e-da777ae21d21 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": "2026-04-12T07:46:48.642299+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.TestAttachDetachVif.test_vif_detach_node_not_found [0.049945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/doesntexist/vifs/186652bc-6265-4726-accc-15b775101f6b GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-481621ae-53b0-460d-a31c-6695cd92e248 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_node.TestTraits.test_set_all_traits_empty [0.475366s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'traits': []} GOT Response: 204 No Content Openstack-Request-Id: req-91d7f976-f121-4c78-b4d4-827b8a96cf10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down [0.078999s] ... 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-fadbefc2-60e8-4f63-829d-f89d74f9671e 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.TestAttachDetachVif.test_vif_list [0.050745s] ... 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-6b0f0571-7f73-4db5-b738-f0404bd13ed2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.28 {"vifs": []} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_configdrive_dict [0.072633s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-469f9d11-7752-44ad-9c00-f47f070e1218 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": "2026-04-12T07:46:48.708612+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_custom_fields [0.043014s] ... 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-f7a1081b-2d85-4ed0-ae3d-bbb2a62904b1 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"}]} {0} ironic.tests.unit.api.controllers.v1.test_node.TestTraits.test_set_all_traits_fails_with_bad_version [0.093730s] ... 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\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestAttachDetachVif.test_vif_subcontroller_old_version [0.062909s] ... 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\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_provision_with_tear_down_in_progress_deploywait [0.069802s] ... 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-ebd0e2dd-7696-4176-a734-38f3062623a2 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_custom_fields_as_list [0.057297s] ... 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-495c0369-2910-499d-857d-55baea768b4f 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_node.TestPut.test_provision_with_tear_down_undeploy [0.103238s] ... 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-e2366996-3bf6-43d2-94b4-f3017dfcd383 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_custom_fields_show_password [0.079992s] ... 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-ad4bcfda-033a-41fa-92c0-0c4717f56406 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"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios [0.128399s] ... 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-ae65c3d0-9d03-4d17-ae8c-57e5cf787566 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": "2026-04-12T07:46:48.879822+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.TestTraits.test_set_all_traits_rejects_bad_trait [0.130639s] ... 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-673be5df-e5f2-439e-a767-28e58ac44ae9 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_deleted_chassis [0.052167s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-06bba244-334f-4581-b369-2e1632ec5965 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": "2026-04-12T07:46:48.947719+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid [0.113863s] ... 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-08d507d4-3048-4eb1-be1d-f51d5fc870e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.12 {3} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_detail_false [0.094199s] ... 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-8837bd0d-0a55-48a7-a976-c7239df2480d 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": "2026-04-12T07:46:48.980006+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.TestTraits.test_set_all_traits_rejects_no_body [0.107956s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-471a5c35-3193-4167-9846-e36ac3e8446a 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_get_one_with_double_json_in_name [0.091930s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/node.json.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-01a47cb5-d33c-49d8-b121-a0ec86cc2b4b 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": "2026-04-12T07:46:49.029710+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_node.TestTraits.test_set_all_traits_rejects_too_long_trait [0.060693s] ... 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-a677a2ac-7292-4669-91c4-b33ef0291b7d 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.TestBIOS.test_get_all_bios_detail_old_version [0.101995s] ... 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-2b7a46e1-0be3-4122-8c98-0039a202417a 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json [0.060536s] ... 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-539e06a8-e3a0-40a0-b21d-5a2970a18bb1 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": "2026-04-12T07:46:49.089939+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_node.TestTraits.test_set_all_traits_with_chassis [0.061170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/traits WITH {'traits': ['CUSTOM_3']} GOT Response: 204 No Content Openstack-Request-Id: req-5e85588d-6b14-4f10-b646-c6de6c0f4b4d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.37 {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_iface_not_supported [0.139428s] ... 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-a062d4a6-cb94-4739-9f39-996604682133 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_fails_with_bad_version [0.047255s] ... 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\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_allow [0.037214s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_empty [0.032853s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_all_bios_with_detail [0.061116s] ... 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-d508f6fa-647e-46e2-9381-a424a5c1a4be 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": "2026-04-12T07:46:49.197878+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_node.TestListNodes.test_get_one_with_json_in_name [0.109550s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/node.json WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-245181c9-d0ee-4eea-ac6a-436993d93f67 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": "2026-04-12T07:46:49.176087+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_local_link_connection_none_type [0.030042s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_none [0.021939s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_json_not_found [0.055944s] ... 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-9c015f63-efd5-49b3-b5bb-a081af533835 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-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_node.TestPut.test_put_raid_invalid_parameter_value [0.138458s] ... 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-075eb652-a382-4218-b665-b6d28a47df28 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}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_not_allow [0.029556s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_detail_and_fields [0.081542s] ... 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-fb279f47-1a22-4fd8-87bb-257cd8d13d89 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}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_allow [0.039870s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_one_with_no_agent_secret [0.061191s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2440a4ad-5e84-4283-96f3-84df9953935c 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": "2026-04-12T07:46:49.331130+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"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields [0.077729s] ... 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-3f59fcad-f123-4339-bfc0-0fcd6381da83 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": "2026-04-12T07:46:49.366571+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"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_physnet_not_allow [0.048715s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_put_raid_older_version [0.116587s] ... 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-9c03760e-92ec-403b-9648-050ca3f50677 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_one_with_suffix [0.074205s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/test.1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6405c570-eea4-402e-bc05-2c3bee31fe18 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": "2026-04-12T07:46:49.398175+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"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_bios_fields_old_version [0.056320s] ... 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-c91733be-b46e-49d3-b0e6-6a51e18f9d70 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}"} {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_allow [0.053248s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_port.TestPortsController__CheckAllowedPortFields.test__check_allowed_port_fields_portgroup_not_allow [0.050830s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_owner_fields [0.079976s] ... 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-4dcbf780-347c-4f64-a4b5-cd5a210b44f2 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.TestBIOS.test_get_one_bios [0.077199s] ... 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-f736d1b1-9744-40ce-99bd-184f7bdaf298 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": "2026-04-12T07:46:49.497882+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"}]}} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_bad_invalid_agent_status [0.042197s] ... 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-2a993e4a-f14e-4bd1-b300-1e67abd10495 X-Openstack-Ironic-Api-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_protected_fields [0.043661s] ... 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-70052a1f-7a80-44d9-af4d-6dd61b95c7c7 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"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_rescue_raises_error_before_1_38 [0.164020s] ... 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-79750dcc-6020-42c4-86f9-fd999ee0a7ac 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.TestHeartbeatScopedRBAC.test_heartbeat_rejects_different_callback_url [0.065346s] ... 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-8e02d2bc-5f9d-418b-9c83-1759e1936ec1 X-Openstack-Ironic-Api-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.TestBIOS.test_get_one_bios_fails_if_not_found [0.105194s] ... 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-bf43f011-01da-4c59-8391-0f727d5a430f 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_node.TestListNodes.test_get_retired_fields [0.096162s] ... 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-3ac6641b-8e2e-4268-b41c-19701fdf1994 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"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestBIOS.test_get_one_bios_fails_with_bad_version [0.037346s] ... 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\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_heartbeat_rejects_file_url [0.072909s] ... 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-1d4c68f3-abd2-42cb-89af-cd89a88ca2c8 X-Openstack-Ironic-Api-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.TestBIOS.test_get_one_bios_no_registry [0.061112s] ... 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-01a70404-0d8e-40fd-84ca-6da8085344e4 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": "2026-04-12T07:46:49.703924+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_ramdisk.TestHeartbeatScopedRBAC.test_node_not_found [0.043395s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/3e702557-6f0a-416a-8c58-8b32fc7a238d WITH {'callback_url': 'https://url'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-64b6b959-45fe-439c-bd6b-c924f45b1cbf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 3e702557-6f0a-416a-8c58-8b32fc7a238d could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_storage_interface_fields [0.088775s] ... 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-fac1f607-b2ea-4f63-b1e8-cfb35e0298b6 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"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_invalid_request_None [0.175279s] ... 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-6baaf38d-2a73-40d5-8b50-d50f67df71e0 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_ramdisk.TestHeartbeatScopedRBAC.test_ok [0.052459s] ... 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-e1bef994-ac8b-4e1c-b64d-fce506f656a2 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.TestNodeShardPatch.test_node_add_shard [0.098752s] ... 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-978647c2-9662-4361-a988-d87c3eff211a 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": "2026-04-12T07:46:49.766336+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_status_and_status [0.045202s] ... 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-d6b8209f-a27e-4c26-b23d-e6d812531701 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_invalid_api_version [0.089881s] ... 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-793a277f-3951-4931-a865-253b91607ffa 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_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_token [0.051845s] ... 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-9d048280-6dac-4c1d-8c63-8c759909cf10 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.TestPut.test_secure_boot_invalid_request_boo [0.132306s] ... 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-3bd87409-1ac5-4075-9291-a64fa114e88c 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_supported_boot_devices [0.055808s] ... 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-0273c01b-0b1a-46de-b15e-4de027651773 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"]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardPatch.test_node_add_shard_fail_wrong_version [0.075511s] ... 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-65da6e5f-c967-4384-b137-7b974b88e3ca 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.TestListNodes.test_get_supported_boot_devices_by_name [0.052207s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/spam/management/boot_device/supported WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0b2e3f4b-bc13-4bb6-933a-9e95fea72b2d 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"]} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_verify_ca [0.070042s] ... 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-5de2ce0b-b059-4c01-9375-eb1304baeb14 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.TestPut.test_secure_boot_invalid_request_nullstr [0.083856s] ... 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-89d637ea-2ec1-45bd-8798-cc2bdf2848bc 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}"} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_ok_agent_version [0.041057s] ... 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-0fd0fdd5-85ca-4f30-a02a-5a79d231ff56 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.TestPut.test_secure_boot_off_older_soft_ver [0.043832s] ... 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-b9e9b248-7755-4a70-83df-f8a71924baa5 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_get_supported_boot_devices_iface_not_supported [0.064048s] ... 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-fa7d34a6-947d-4e65-9852-73185184a8bd 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_ramdisk.TestHeartbeatScopedRBAC.test_ok_by_name [0.075332s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/test.1 WITH {'callback_url': 'https://url', 'agent_token': 'token'} GOT Response: 202 Accepted Openstack-Request-Id: req-6c954cf1-83a9-448c-9a61-66beae6e8e0b 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_indicators [0.068074s] ... 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-fd6d956b-9622-4d33-9f9d-6008b3b8081e 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"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_soft_ver [0.078110s] ... 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-d9d46a2b-de7c-4f5c-bb0e-4943863c692a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardPost.test_create_node_with_shard [0.191442s] ... 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-b81316b2-5918-47b8-a709-bbf889941845 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": "2026-04-12T07:46:50.059482+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-35f90bf8-1e4f-4cc9-b4e0-3ee82a22a554 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": "2026-04-12T07:46:50.059482+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_node.TestListNodes.test_get_supported_indicators_iface_not_supported [0.058373s] ... 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-7bcd3747-5517-4661-af42-c5274be4ae96 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_off_valid_undocumented_request_zero [0.049704s] ... 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-4032bc4c-245c-4efd-94c5-2d3ae824b022 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.76 {3} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardPost.test_create_node_with_shard_fail_wrong_version [0.085297s] ... 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-08411f7d-c6e0-453d-9b88-87a603bfd459 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_ramdisk.TestHeartbeatScopedRBAC.test_ok_for_anaconda [0.117395s] ... 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-a47a14d6-cc24-4b37-afb1-570b04247ce1 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_indicators_versioning [0.079199s] ... 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-00dd562a-45a5-4268-90dc-d69c6b8e133d 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"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_invalid_request_two [0.099731s] ... 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-6d54f45f-949f-47d0-b7ef-eac1364c53e0 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test__update_changed_fields_lowers_conductor_group [0.084569s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_get_traits_fields [0.057700s] ... 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-02fc14a1-2668-4d0e-a2d9-ffd760c19dae 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_ramdisk.TestHeartbeatScopedRBAC.test_ok_with_json [0.100878s] ... 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-0d974443-dc2c-478c-9c7a-c13438795c72 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.TestPatch.test__update_changed_fields_remove_chassis_uuid [0.044269s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_older_soft_ver [0.077947s] ... 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-f5137d18-0c94-4ce7-8110-37e3be33b956 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_get_traits_fields_invalid_api_version [0.044921s] ... 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-87482c33-ab86-4501-9ae2-5bf6b4107a62 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_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_verify_ca_error [0.063280s] ... 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-4bd454f8-301a-496a-9255-868138fa1aa6 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_with_allocation [0.084839s] ... 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-5a3925c3-17cb-4a02-b7c4-7e6b42b1f2d0 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": "f7dae089-5ba1-45e4-beb9-a203adf3e370"} {0} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeatScopedRBAC.test_old_API_agent_version_error [0.055422s] ... 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-2b22cc81-34fa-4566-b16f-d569ff5deb50 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_soft_ver [0.106821s] ... 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-b4624452-ae0a-4aad-b508-21972ccfdcc3 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_ramdisk.TestHeartbeatScopedRBAC.test_old_api_agent_status_error [0.043040s] ... 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-6fce37ab-42a4-46ce-bcde-0831cd983463 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_clean_step [0.061833s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-11e2f831-99dd-406c-828c-eb2600ebe370 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": "2026-04-12T07:46:50.459881+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-cb2f6c17-b96f-4f13-8ebf-e0a08cb873f8 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": "2026-04-12T07:46:50.459881+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_secure_boot_on_valid_undocumented_request_one [0.058420s] ... 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-f71f6991-d9ec-4d60-b72d-05e10c7bd272 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_ramdisk.TestHeartbeatScopedRBAC.test_old_api_version [0.037795s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/ce1fc522-dad1-477a-91ea-f81fa4dc5bcb WITH {'callback_url': 'https://url'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-60d4609b-893d-4127-badf-d322033c71a3 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_root.TestCheckVersions.test_check_version_invalid_major_version [0.034230s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_ok [0.034215s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_description [0.116907s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6f4fa3b2-3601-4345-992c-52a6ab7af27a 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": "2026-04-12T07:46:50.557390+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-b1864e71-814a-41bb-b8d9-ee6fab519b89 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": "2026-04-12T07:46:50.557390+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_high [0.021953s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_root.TestCheckVersions.test_check_version_too_low [0.037682s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_id [0.355235s] ... 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-1982c372-fb66-42f1-bb2d-131e087f1aa3 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.controllers.v1.test_runbook.TestPatch.test_add_multi [0.120395s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/d8f7e6fd-e9de-4930-b44b-4f4479143ef0 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-a3f44f77-36dc-4ed5-abb0-e681eac5ff0e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d8f7e6fd-e9de-4930-b44b-4f4479143ef0", "created_at": "2026-04-12T07:46:50.705571+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/d8f7e6fd-e9de-4930-b44b-4f4479143ef0", "rel": "self"}, {"href": "http://localhost/runbooks/d8f7e6fd-e9de-4930-b44b-4f4479143ef0", "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.controllers.v1.test_runbook.TestPatch.test_add_root_non_existent [0.046029s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/aa80a693-8a28-4c22-ad4c-90c8e155690d WITH [{'path': '/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0ee69c09-8ce3-41b1-bf9e-888d0a7589ae X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_add_too_high_index_step_fail [0.047630s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/957f7b73-4a31-4bf3-80e6-518834df5c3b 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-5326f7ed-87f6-4d96-ac18-b8c36b52b4c4 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_service [0.392692s] ... 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-3269c9e4-b5a0-43c8-976c-d54ec47504be 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) {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_chassis_uuid [0.240191s] ... 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-fe5643bf-7b66-4b22-86d5-d33ed1b6218b 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": "2026-04-12T07:46:50.739726+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.TestListNodes.test_hide_fields_in_newer_versions_driver_internal [0.373347s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a7ecf14e-299f-433e-9c66-aca5f0365d7c 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": "2026-04-12T07:46:50.945494+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-2242440d-f9d9-4ca9-a5c5-b4bb41274ae4 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": "2026-04-12T07:46:50.945494+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_runbook.TestPatch.test_remove_foo [0.117295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/4ae3d1bb-aad7-4963-971c-8c00429ff340 WITH [{'path': '/foo', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f8e9b0eb-0e56-444a-9258-959f60e28d2a X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_service_args_required [0.106938s] ... 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-15d454fd-1d2d-4f10-9f70-69855a0093c1 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_inspection [0.071834s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-31682391-76ee-4018-9ce2-a5d1465698dd 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": "2026-04-12T07:46:51.022841+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-272d9d2e-cf58-4081-ac06-023ed100d7c6 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": "2026-04-12T07:46:51.022841+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_node.TestPut.test_service_with_runbooks [0.092627s] ... 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-c82a44c3-6220-4083-9683-e17d4446749d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.106 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_node.TestPatch.test_add_ok [0.223368s] ... 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-347914d3-b3df-4ec2-98ec-03653939575b 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": "2026-04-12T07:46:50.946495+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.controllers.v1.test_node.TestPut.test_service_with_runbooks_unapproved [0.082101s] ... 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-23eabf12-8135-4cd6-8771-b44887839020 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_interface_fields [0.132620s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-12602507-b531-4455-97a6-206c6dfaace1 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": "2026-04-12T07:46:51.111796+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-22b555c8-7584-4e90-bf2d-9a03e27f1b0f 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": "2026-04-12T07:46:51.111796+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_runbook.TestPatch.test_remove_multi [0.208476s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/f9214d30-1f6a-417c-876d-62f6cc67bab9 WITH [{'path': '/steps/1', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e864ddd1-1427-47eb-a81b-cbdc7a816258 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f9214d30-1f6a-417c-876d-62f6cc67bab9", "created_at": "2026-04-12T07:46:51.098432+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/f9214d30-1f6a-417c-876d-62f6cc67bab9", "rel": "self"}, {"href": "http://localhost/runbooks/f9214d30-1f6a-417c-876d-62f6cc67bab9", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration0", "args": {}, "order": 2}, {"interface": "raid", "step": "create_configuration2", "args": {}, "order": 2}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_name [0.073312s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7c6fb958-5c2e-4b9f-be51-73d2b134c7ae 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": "2026-04-12T07:46:51.231627+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-d128f302-9035-48d0-b3f2-60555612c966 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": "2026-04-12T07:46:51.231627+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_node.TestPut.test_set_boot_device [0.105843s] ... 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-630d50cc-65c4-47cf-8a12-ef2f12a0a56a 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.TestPatch.test_add_root [0.154025s] ... 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-0d048d37-56e6-444e-8045-225f68d237a3 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": "2026-04-12T07:46:51.204817+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_runbook.TestPatch.test_remove_name [0.118251s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/89a2a42b-9ff6-4329-8d60-4c3becd5baf3 WITH [{'path': '/name', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ed24ee6c-e501-4830-87b9-2fd05ca12b4b X-Openstack-Ironic-Api-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_node.TestListNodes.test_hide_fields_in_newer_versions_network_interface [0.092994s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7bc088d8-75f6-4636-93c5-a14b16a22cff 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": "2026-04-12T07:46:51.303399+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-e708fb1a-376a-4447-afec-d1159e2238a4 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": "2026-04-12T07:46:51.303399+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"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_root_non_existent [0.062969s] ... 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-9a125dd7-8ac9-4383-94a3-c851feeb17ac 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.controllers.v1.test_node.TestPut.test_set_boot_device_by_name [0.124644s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/management/boot_device WITH {'boot_device': 'pxe'} GOT Response: 204 No Content Openstack-Request-Id: req-b0538863-8d8c-46e8-9464-a9db8cfa6f6e 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_runbook.TestPatch.test_remove_non_existent_property_fail [0.112837s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/1082072b-8305-48d6-b82f-06141522f97d WITH [{'path': '/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-03027705-a021-471e-b0c7-54a8ed1ec6ac X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_resource_class [0.109528s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68d5fba1-fbf6-4574-a121-6ae0640a6b08 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": "2026-04-12T07:46:51.411307+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-9a377c8e-d15a-49f8-b0c7-31816f55bf14 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": "2026-04-12T07:46:51.411307+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"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_cleaning [0.114295s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/de4d70d9-c090-4b2e-91b2-5870f030fac2 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-f7ef1afc-1a4d-4cea-a50b-ab86bc41fbcd 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 de4d70d9-c090-4b2e-91b2-5870f030fac2 can not be updated while a state transition is in progress.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_storage_interface [0.090894s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2ed16c2e-e6ab-4b86-8144-7fd4dbf2e165 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": "2026-04-12T07:46:51.514986+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-c967cc2d-cf48-4185-9b91-3990cc880077 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": "2026-04-12T07:46:51.514986+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_node.TestPut.test_set_boot_device_not_supported [0.165086s] ... 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-5db66b9a-760d-451c-9b71-71d4163e785f 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_runbook.TestPatch.test_remove_non_existent_step_fail [0.161194s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/0bd76417-392a-4aec-ad37-67a1f3ebe000 WITH [{'path': '/steps/1', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-246ba964-8e79-479b-84be-610432da98ac X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_add_state_in_deployfail [0.150344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/af6674cb-7ffc-4f92-a758-71c4f842c3a5 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d7c7a9a5-23ef-415a-a39b-3629c2d9db47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "af6674cb-7ffc-4f92-a758-71c4f842c3a5", "created_at": "2026-04-12T07:46:51.522521+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/af6674cb-7ffc-4f92-a758-71c4f842c3a5", "rel": "self"}, {"href": "http://localhost/nodes/af6674cb-7ffc-4f92-a758-71c4f842c3a5", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/af6674cb-7ffc-4f92-a758-71c4f842c3a5/ports", "rel": "self"}, {"href": "http://localhost/nodes/af6674cb-7ffc-4f92-a758-71c4f842c3a5/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_hide_fields_in_newer_versions_traits [0.083621s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-848aff6b-cb39-4901-9687-95c62192703d 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": "2026-04-12T07:46:51.601014+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-e99e3fe5-32bb-4f88-ac1c-28beeb8b0fd2 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": "2026-04-12T07:46:51.601014+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_runbook.TestPatch.test_remove_non_existent_step_property_fail [0.073439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/222792eb-3f6d-4ff0-a99d-c07b4ee72dff WITH [{'path': '/steps/0/non-existent', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-07826fc0-2e07-406f-9816-c01e48eb897a X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_empty_invalid [0.086280s] ... 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-811550a9-48be-4496-8477-604ec432199a 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_boot_device_persistent [0.164744s] ... 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-c1a2d9b4-a443-4dc2-81d8-fdf04aa714a0 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_runbook.TestPatch.test_remove_only_step_fail [0.079059s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/32ca8ffa-5b52-4c75-b5a6-a93ae68e3dec WITH [{'path': '/steps/0', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-327d3a67-3484-4e37-aadd-2dcd618f224c X-Openstack-Ironic-Api-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_node.TestListNodes.test_hide_fields_in_newer_versions_volume [0.115202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-866cf60e-5e93-4e2d-95b0-2de56affcf7d 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": "2026-04-12T07:46:51.715003+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-24cbe70e-c5cf-4676-9f9f-748afb559736 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": "2026-04-12T07:46:51.715003+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.TestPatch.test_patch_add_name_empty_not_acceptable [0.063134s] ... 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-3969a6d6-2d4b-417a-b3d7-bcf7b53aeb3f 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_node.TestPut.test_set_boot_device_persistent_invalid_value [0.066597s] ... 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-10d4d1e1-f145-4521-b415-0899de316c1c 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_steps [0.099542s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/4420f602-b820-47c5-b13c-2d102239b8bd WITH [{'path': '/steps', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2ee74e5c-ec07-4bfc-8906-16914ca5fcd7 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links [0.091368s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e117f23d-4b84-4aaa-81d3-24d1af6d7a27 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "created_at": "2026-04-12T07:46:51.796081+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/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "rel": "self"}, {"href": "http://localhost/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f/ports", "rel": "self"}, {"href": "http://localhost/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f/ports", "rel": "bookmark"}]} GET /v1/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7c5ad7c4-3fa4-4564-8b36-f0d1b146609b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "created_at": "2026-04-12T07:46:51.796081+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/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "rel": "self"}, {"href": "http://localhost/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f/ports", "rel": "self"}, {"href": "http://localhost/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f/ports", "rel": "bookmark"}]} GET /nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f8bf3fd7-8262-4018-9565-f9c3608bc33d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "created_at": "2026-04-12T07:46:51.796081+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/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "rel": "self"}, {"href": "http://localhost/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f/ports", "rel": "self"}, {"href": "http://localhost/nodes/e1ca2d24-f332-45f4-b3d2-2ddcb06bd32f/ports", "rel ": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_remove_uuid [0.042753s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/655b4123-5fb6-4853-b4f2-81f4be620274 WITH [{'path': '/uuid', 'op': 'remove'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-17fb3917-c96e-4878-927c-46340a75ee6c X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_invalid [0.109964s] ... 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-6a3b6f97-4c28-4431-b1c1-8a644e48ffd0 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_by_name [0.093738s] ... 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-e7b92bf0-eab8-477f-b14e-18f7b98ecf6c 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_runbook.TestPatch.test_replace_duplicate_step [0.081142s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/9651f6e2-5685-4e53-a513-c266a389851d 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-53e7a38b-4a46-45ce-b3a3-0e269b4bbd6c X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_links_public_url [0.121616s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/972c76a2-9ced-45d9-b923-c677158da68f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f862fedc-2bd4-4ef2-9953-58953bc5fdbd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "972c76a2-9ced-45d9-b923-c677158da68f", "created_at": "2026-04-12T07:46:51.913172+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/972c76a2-9ced-45d9-b923-c677158da68f", "rel": "self"}, {"href": "http://foo/nodes/972c76a2-9ced-45d9-b923-c677158da68f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://foo/v1/nodes/972c76a2-9ced-45d9-b923-c677158da68f/ports", "rel": "self"}, {"href": "http://foo/nodes/972c76a2-9ced-45d9-b923-c677158da68f/ports", "rel": "bookmark"}]} GET /v1/nodes/972c76a2-9ced-45d9-b923-c677158da68f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-939a17f4-57e8-4546-8744-e014e22b9d39 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "972c76a2-9ced-45d9-b923-c677158da68f", "created_at": "2026-04-12T07:46:51.913172+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/972c76a2-9ced-45d9-b923-c677158da68f", "rel": "self"}, {"href": "http://foo/nodes/972c76a2-9ced-45d9-b923-c677158da68f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://foo/v1/nodes/972c76a2-9ced-45d9-b923-c677158da68f/ports", "rel": "self"}, {"href": "http://foo/nodes/972c76a2-9ced-45d9-b923-c677158da68f/ports", "rel": "bookmark"}]} GET /nodes/972c76a2-9ced-45d9-b923-c677158da68f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-30a30656-0121-4148-8dc3-5fd776bf59c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "972c76a2-9ced-45d9-b923-c677158da68f", "created_at": "2026-04-12T07:46:51.913172+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/972c76a2-9ced-45d9-b923-c677158da68f", "rel": "self"}, {"href": "http://foo/nodes/972c76a2-9ced-45d9-b923-c677158da68f", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://foo/v1/nodes/972c76a2-9ced-45d9-b923-c677158da68f/ports", "rel": "self"}, {"href": "http://foo/nodes/972c76a2-9ced-45d9-b923-c677158da68f/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_by_name_unsupported [0.111145s] ... 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-52e5360a-c917-4287-a8f7-d876e54cf3e3 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_empty_step_list_fail [0.062217s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/1c3ee082-ca01-44fc-88f5-6ad1b1150183 WITH [{'path': '/steps', 'op': 'replace', 'value': []}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-29e80add-406b-49b6-80f6-e425bf306866 X-Openstack-Ironic-Api-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.controllers.v1.test_node.TestPatch.test_patch_add_name_ok [0.155055s] ... 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-4f691ca5-4154-4c88-8146-f8bcfe9294d5 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": "2026-04-12T07:46:51.910926+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.controllers.v1.test_node.TestPut.test_set_console_mode_bad_request [0.062561s] ... 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-3b01cd9d-fe26-4ead-9486-58e668276ddc 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes [0.108638s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?maintenance=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0eebfa2f-7402-48ae-94f4-d74c915803aa 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": "7be7c912-68c4-4e1d-bee5-cc8374611369", "instance_uuid": null, "maintenance": true, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/7be7c912-68c4-4e1d-bee5-cc8374611369", "rel": "self"}, {"href": "http://localhost/nodes/7be7c912-68c4-4e1d-bee5-cc8374611369", "rel": "bookmark"}]}, {"uuid": "6f876ea9-f7d3-4023-8616-4d432176ab5d", "instance_uuid": null, "maintenance": true, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/6f876ea9-f7d3-4023-8616-4d432176ab5d", "rel": "self"}, {"href": "http://localhost/nodes/6f876ea9-f7d3-4023-8616-4d432176ab5d", "rel": "bookmark"}]}]} GET /v1/nodes?maintenance=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-666610cd-35bd-4cc9-a344-a997da4ef9f4 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": "a5de185c-dc8a-4762-af05-fe257b3dd05c", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/a5de185c-dc8a-4762-af05-fe257b3dd05c", "rel": "self"}, {"href": "http://localhost/nodes/a5de185c-dc8a-4762-af05-fe257b3dd05c", "rel": "bookmark"}]}, {"uuid": "5e54e942-d45b-437f-bd17-91cda888a6d9", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/5e54e942-d45b-437f-bd17-91cda888a6d9", "rel": "self"}, {"href": "http://localhost/nodes/5e54e942-d45b-437f-bd17-91cda888a6d9", "rel": "bookmark"}]}, {"uuid": "7059782f-9ccd-4626-b73a-2a66d9c8615d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/7059782f-9ccd-4626-b73a-2a66d9c8615d", "rel": "self"}, {"href": "http://localhost/nodes/7059782f-9ccd-4626-b73a-2a66d9c8615d", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_bad_request_missing_parameter [0.053356s] ... 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-51f9563c-d536-4ff5-a91b-7c0dc699eccc 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_invalid_name_none [0.130618s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/f116fb08-87c2-49eb-a59c-d3397ef23b2c WITH [{'path': '/name', 'op': 'replace', 'value': None}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-fd0bb73b-062a-4281-8a0e-f4cb864077e7 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_maintenance_nodes_associated [0.102328s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=true&maintenance=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1a5268cc-a5df-44dc-a744-799b3f9daf5f 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": "0d6167af-e08e-499d-9538-d43c7fc7ca13", "instance_uuid": "a605d03b-e076-4d4d-92b1-30364af3f85a", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/0d6167af-e08e-499d-9538-d43c7fc7ca13", "rel": "self"}, {"href": "http://localhost/nodes/0d6167af-e08e-499d-9538-d43c7fc7ca13", "rel": "bookmark"}]}, {"uuid": "7da3bf17-3eb9-4c7d-b7da-2fa17623bf08", "instance_uuid": "981c4039-d9b6-43d4-8eb0-2cc8a53b0122", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/7da3bf17-3eb9-4c7d-b7da-2fa17623bf08", "rel": "self"}, {"href": "http://localhost/nodes/7da3bf17-3eb9-4c7d-b7da-2fa17623bf08", "rel": "bookmark"}]}, {"uuid": "93647aa4-c720-4b4b-97d2-b9003abcab62", "instance_uuid": "ca59c613-3a8f-44e9-a629-41efe1351f81", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/93647aa4-c720-4b4b-97d2-b9003abcab62", "rel": "self"}, {"href": "http://localhost/nodes/93647aa4-c720-4b4b-97d2-b9003abcab62", "rel": "bookmark"}]}, {"uuid": "c1752a8e-5147-4c1d-9451-6a795ef4b72b", "instance_uuid": "4a38f7dd-222a-43ef-a86b-c87ff19d46bb", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/c1752a8e-5147-4c1d-9451-6a795ef4b72b", "rel": "self"}, {"href": "http://localhost/nodes/c1752a8e-5147-4c1d-9451-6a795ef4b72b", "rel": "bookmark"}]}]} GET /v1/nodes?associated=true&maintenance=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3814a566-324e-447a-9a6f-bea435cb3c14 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": "a4dd0f12-8ad6-44e8-bc28-f1f6547d06d5", "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-297e0ad6-eff5-4c5e-93fd-c49b78973e1b 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": "a4dd0f12-8ad6-44e8-bc28-f1f6547d06d5", "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"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_console_not_supported [0.075565s] ... 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-cac00b72-9b9f-413e-b64f-951446059474 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_add_name_reserved [0.187659s] ... 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-4d5562d2-92b7-4e17-ac60-2aab933ed61d 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-a1c60790-56ad-46ee-9ac1-4e4429050301 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-cb33aa66-59da-47c7-aa6b-03a97b2b1fc3 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-a425bd2f-b961-477f-8a90-3ba53bbef4b3 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-305b5151-e332-4379-a9f2-77ad8d4e170c 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-6cd3fc49-fb60-439c-b02f-11320d221df1 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_runbook.TestPatch.test_replace_invalid_name_too_long [0.081092s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/d8cbd0ca-10bb-4f88-a9d9-cb741b358f8a WITH [{'path': '/name', 'op': 'replace', 'value': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-44a9c6cb-3112-4064-b5c3-94e49929f6f0 X-Openstack-Ironic-Api-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_node.TestListNodes.test_maintenance_nodes_error [0.051559s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=true&maintenance=blah WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-2e4716ff-e944-4e19-9c5b-8c6a0ed2e04f 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_console_mode_disabled [0.050134s] ... 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-a08f0418-fc46-4605-b379-c5cb21ac4a34 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_runbook.TestPatch.test_replace_invalid_step_interface_fail [0.067103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/8eabc529-4d25-4ec6-8f47-52712b501953 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-e525dcf0-2208-456d-989d-d17315d0ebc8 X-Openstack-Ironic-Api-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.controllers.v1.test_node.TestPut.test_set_console_mode_enabled [0.053235s] ... 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-a3de542c-043d-4976-8194-d451dba31e58 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.TestPatch.test_patch_add_replace_invalid [0.111795s] ... 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-93a57d83-a593-4dec-9ac2-f393f6c9265f 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many [0.103316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-739f3cb6-240c-4219-b574-354a0a8f4f84 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": "f551afd5-18d1-44f6-a318-201f1500c373", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f551afd5-18d1-44f6-a318-201f1500c373", "rel": "self"}, {"href": "http://localhost/nodes/f551afd5-18d1-44f6-a318-201f1500c373", "rel": "bookmark"}]}, {"uuid": "cd9b9f43-0dd9-4fe9-a7b2-4b71420214ee", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/cd9b9f43-0dd9-4fe9-a7b2-4b71420214ee", "rel": "self"}, {"href": "http://localhost/nodes/cd9b9f43-0dd9-4fe9-a7b2-4b71420214ee", "rel": "bookmark"}]}, {"uuid": "61975107-0539-4b18-a18b-1328456cb504", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/61975107-0539-4b18-a18b-1328456cb504", "rel": "self"}, {"href": "http://localhost/nodes/61975107-0539-4b18-a18b-1328456cb504", "rel": "bookmark"}]}, {"uuid": "6538ba4b-287d-40a4-ba42-66b52c5fcc1b", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/6538ba4b-287d-40a4-ba42-66b52c5fcc1b", "rel": "self"}, {"href": "http://localhost/nodes/6538ba4b-287d-40a4-ba42-66b52c5fcc1b", "rel": "bookmark"}]}, {"uuid": "92a97c5e-2d68-452e-9531-93760c976aee", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/92a97c5e-2d68-452e-9531-93760c976aee", "rel": "self"}, {"href": "http://localhost/nodes/92a97c5e-2d68-452e-9531-93760c976aee", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_forbidden [0.060950s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-83bc840a-e19f-4f47-b5cb-9321f872e485 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.TestPatch.test_patch_allocation_forbidden [0.089305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/a3b0a00d-c25d-4a5b-a4e5-5143abbc4a1c WITH [{'path': '/allocation_uuid', 'op': 'replace', 'value': '61fa225e-7929-4751-b2ba-482413448c9b'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cd643be2-eebf-4772-ad5f-cecb9d1a4067 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state [0.130249s] ... 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-6a0f6abf-aa74-4828-a3e1-25cfd33c1343 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_runbook.TestPatch.test_replace_multi [0.132461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/8eb3e8ff-32e8-4e32-855e-9fc6ec8ae6fb 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-760c1317-de10-45c2-896e-2bb598b55308 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8eb3e8ff-32e8-4e32-855e-9fc6ec8ae6fb", "created_at": "2026-04-12T07:46:52.367306+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/8eb3e8ff-32e8-4e32-855e-9fc6ec8ae6fb", "rel": "self"}, {"href": "http://localhost/runbooks/8eb3e8ff-32e8-4e32-855e-9fc6ec8ae6fb", "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}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_allocation_uuid_forbidden [0.075445s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/9c99de6f-7aeb-46bb-8292-164326ed95df WITH [{'path': '/allocation_uuid', 'op': 'replace', 'value': 'a4f3a237-5945-48a2-be9a-a7233327679f'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-928277a4-9fc5-49ee-94a5-7eadf1ffa25e 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_name_already_exist [0.079118s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/7afaff3d-9b84-4d67-9135-978a0ec6638b WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-a5eeeded-d242-4fa8-930c-116345232f27 X-Openstack-Ironic-Api-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 7afaff3d-9b84-4d67-9135-978a0ec6638b already exists.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_invalid_value [0.094939s] ... 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-6a12d30c-cf98-457b-96cc-e89cfe0169a4 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_conductor_forbidden [0.092934s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/b05996b6-d4a8-45ac-8fe2-46d5bf79a3fe WITH [{'path': '/conductor', 'op': 'replace', 'value': 'why care'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3e923aab-2bc4-4c63-97de-f1bf3a52d739 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_replace_non_existent_step_fail [0.080506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/d58c4b9c-3604-4b11-9446-bebb01c54f8b 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-782d6711-7164-4226-be36-8cb6ac63d345 X-Openstack-Ironic-Api-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_node.TestListNodes.test_many_have_names [0.185858s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-11a338ac-d55a-41e1-acbb-746c7b655803 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": "2b4bac6b-dd13-452a-bdd7-bb0aa1134319", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-0", "links": [{"href": "http://localhost/v1/nodes/2b4bac6b-dd13-452a-bdd7-bb0aa1134319", "rel": "self"}, {"href": "http://localhost/nodes/2b4bac6b-dd13-452a-bdd7-bb0aa1134319", "rel": "bookmark"}]}, {"uuid": "9eed85ca-a794-4b3e-b3a1-d1791321dc1c", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-1", "links": [{"href": "http://localhost/v1/nodes/9eed85ca-a794-4b3e-b3a1-d1791321dc1c", "rel": "self"}, {"href": "http://localhost/nodes/9eed85ca-a794-4b3e-b3a1-d1791321dc1c", "rel": "bookmark"}]}, {"uuid": "086fd5e4-165f-4e38-b635-d9eb6ea74ae3", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-2", "links": [{"href": "http://localhost/v1/nodes/086fd5e4-165f-4e38-b635-d9eb6ea74ae3", "rel": "self"}, {"href": "http://localhost/nodes/086fd5e4-165f-4e38-b635-d9eb6ea74ae3", "rel": "bookmark"}]}, {"uuid": "20ac3838-3865-4d19-b0d7-f7fbedf5cc3c", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-3", "links": [{"href": "http://localhost/v1/nodes/20ac3838-3865-4d19-b0d7-f7fbedf5cc3c", "rel": "self"}, {"href": "http://localhost/nodes/20ac3838-3865-4d19-b0d7-f7fbedf5cc3c", "rel": "bookmark"}]}, {"uuid": "8df7b07c-c843-48a6-99d7-373dfe845aeb", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": "node-4", "links": [{"href": "http://localhost/v1/nodes/8df7b07c-c843-48a6-99d7-373dfe845aeb", "rel": "self"}, {"href": "http://localhost/nodes/8df7b07c-c843-48a6-99d7-373dfe845aeb", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_indicator_state_not_supported [0.099496s] ... 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-c87d2fab-0c1f-405b-b012-f3847f04f193 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_runbook.TestPatch.test_replace_step_invalid_interface [0.046676s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/d00ec667-c1fd-4eda-81c9-652a7432cab6 WITH [{'path': '/steps/0/interface', 'op': 'replace', 'value': 'foo'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1044f207-f991-4046-8bac-41a311464af3 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_deploy_step_forbidden [0.103634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/9d33165d-0ecc-4d49-9d6d-f0abb48fc796 WITH [{'path': '/deploy_step', 'op': 'replace', 'value': 'deploy this'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-55c2e9b2-2618-43d0-b366-0852736858fc 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbid_project_mismatch [0.094676s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?project=54321 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-683d5056-958d-4130-bc6c-cc28aef29ac1 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.TestPut.test_set_indicator_state_qs [0.104889s] ... 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-0086f6e6-e776-4523-961e-6fe5ae321507 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.TestPut.test_set_indicator_state_versioning [0.087363s] ... 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-5a3725d4-fc68-4c89-8e23-872c67544418 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.63 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_duplicate_name [0.151906s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/55b01aed-73fc-40a2-bfd3-fc35f79570b0 WITH [{'path': '/name', 'op': 'replace', 'value': 'this-is-my-node'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-f9c4d6c2-94aa-4ed2-8dfe-b95cc23bf380 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_many_list_all_forbidden [0.153584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-91ed7bae-0f84-40a9-a4f5-a14b03494480 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": "683b0a77-847e-4c10-a8ac-d33d38cde8b1", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/683b0a77-847e-4c10-a8ac-d33d38cde8b1", "rel": "self"}, {"href": "http://localhost/nodes/683b0a77-847e-4c10-a8ac-d33d38cde8b1", "rel": "bookmark"}]}, {"uuid": "5fa62cbf-8fd5-4c1e-9fb5-6dcfc15b2d1d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/5fa62cbf-8fd5-4c1e-9fb5-6dcfc15b2d1d", "rel": "self"}, {"href": "http://localhost/nodes/5fa62cbf-8fd5-4c1e-9fb5-6dcfc15b2d1d", "rel": "bookmark"}]}, {"uuid": "f17d3ebb-f5a3-4dc2-956d-e24dbdeb8727", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/f17d3ebb-f5a3-4dc2-956d-e24dbdeb8727", "rel": "self"}, {"href": "http://localhost/nodes/f17d3ebb-f5a3-4dc2-956d-e24dbdeb8727", "rel": "bookmark"}]}, {"uuid": "4b5cd266-3a65-42ff-a742-db107ebae29a", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/4b5cd266-3a65-42ff-a742-db107ebae29a", "rel": "self"}, {"href": "http://localhost/nodes/4b5cd266-3a65-42ff-a742-db107ebae29a", "rel": "bookmark"}]}, {"uuid": "f0379046-95ba-45b0-83d6-0caf1703c65d", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/f0379046-95ba-45b0-83d6-0caf1703c65d", "rel": "self"}, {"href": "http://localhost/nodes/f0379046-95ba-45b0-83d6-0caf1703c65d", "rel": "bookmark"}]}, {"uuid": "89aa3bee-369c-4627-b11a-cb224f18b16b", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/89aa3bee-369c-4627-b11a-cb224f18b16b", "rel": "self"}, {"href": "http://localhost/nodes/89aa3bee-369c-4627-b11a-cb224f18b16b", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode [0.068345s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH {'reason': 'fake_reason'} GOT Response: 202 Accepted Openstack-Request-Id: req-c286b4f4-6388-4ff8-8a49-dd5c8e8f902e 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.048626s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c4390414-d83e-4c95-9027-6390902de7c4 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.TestPatch.test_patch_fault_forbidden [0.100497s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/a071e3b3-5758-4e74-b8b5-6bdf8012939e WITH [{'path': '/fault', 'op': 'replace', 'value': 'why care'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b196d24b-e770-4479-83a3-bae38679a8fb 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}"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_by_name [0.066963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/maintenance WITH {'reason': 'fake_reason'} GOT Response: 202 Accepted Openstack-Request-Id: req-ba5c607c-66ca-4011-b35f-8bc46468e729 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_mask_available_state [0.066580s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e9e41cad-cb3d-4bec-b5a2-1b0186ec78ef 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": "2026-04-12T07:46:52.970679+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-0da032e4-30a2-4172-9905-36651acc0eb2 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": "2026-04-12T07:46:52.970679+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_error [0.081521s] ... 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-dccf2dc2-b0fc-4b36-bc6f-b301ac67d19b 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_node.TestListNodes.test_next_link_with_association [0.077744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/?limit=3&associated=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a3f48771-3f3f-4f9d-8634-589bde6791c0 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": "c907ef69-dff8-437d-b610-5bb9904a07bc", "instance_uuid": "1c3cfc33-9b45-4db2-987a-dc8636d56736", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/c907ef69-dff8-437d-b610-5bb9904a07bc", "rel": "self"}, {"href": "http://localhost/nodes/c907ef69-dff8-437d-b610-5bb9904a07bc", "rel": "bookmark"}]}, {"uuid": "eb032e5d-3344-457b-8935-ef4f24cc0185", "instance_uuid": "b4119dd2-952f-4ab5-924f-5e820812fcac", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/eb032e5d-3344-457b-8935-ef4f24cc0185", "rel": "self"}, {"href": "http://localhost/nodes/eb032e5d-3344-457b-8935-ef4f24cc0185", "rel": "bookmark"}]}, {"uuid": "ee515a68-0e47-4768-9ec3-294673972358", "instance_uuid": "21385c30-f22f-4692-9cf4-b7353ac6747e", "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/ee515a68-0e47-4768-9ec3-294673972358", "rel": "self"}, {"href": "http://localhost/nodes/ee515a68-0e47-4768-9ec3-294673972358", "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=ee515a68-0e47-4768-9ec3-294673972358"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_remove_ok [0.148772s] ... 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-4d2947f1-a0f8-4e36-8da8-1ab99068e6f8 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": "2026-04-12T07:46:53.008339+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.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason [0.052530s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance WITH {} GOT Response: 202 Accepted Openstack-Request-Id: req-09a02204-4e48-4904-a850-77f1772a0866 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_runbook.TestPatch.test_runbook_set_owner_public_system_scope [0.488374s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '66363dbe-24a3-435d-82b8-f6b7abe32f94', '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/66363dbe-24a3-435d-82b8-f6b7abe32f94 Openstack-Request-Id: req-f30f07fa-c545-4188-b10f-279b7c9c420b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "66363dbe-24a3-435d-82b8-f6b7abe32f94", "created_at": "2026-04-12T07:46:53.084886+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/66363dbe-24a3-435d-82b8-f6b7abe32f94", "rel": "self"}, {"href": "http://localhost/runbooks/66363dbe-24a3-435d-82b8-f6b7abe32f94", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/66363dbe-24a3-435d-82b8-f6b7abe32f94 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-4843ac81-71d5-4da4-9aa2-43e5f8b33547 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "66363dbe-24a3-435d-82b8-f6b7abe32f94", "created_at": "2026-04-12T07:46:53.084886+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/66363dbe-24a3-435d-82b8-f6b7abe32f94", "rel": "self"}, {"href": "http://localhost/runbooks/66363dbe-24a3-435d-82b8-f6b7abe32f94", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_set_node_maintenance_mode_no_reason_by_name [0.042089s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/node-39/maintenance WITH {} GOT Response: 202 Accepted Openstack-Request-Id: req-b1479335-8226-4f35-82c6-7af34cc825d1 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_next_link_with_association_with_detail [0.083469s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?limit=3&associated=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-310b4ad4-3ddb-4d79-a085-e7dbb3a38005 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": "7f691754-1461-483f-8d6b-38bccd955672", "created_at": "2026-04-12T07:46:53.132647+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": "6c84c19d-8bb0-4f86-9ff0-e14a613855e3", "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/7f691754-1461-483f-8d6b-38bccd955672", "rel": "self"}, {"href": "http://localhost/nodes/7f691754-1461-483f-8d6b-38bccd955672", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/7f691754-1461-483f-8d6b-38bccd955672/ports", "rel": "self"}, {"href": "http://localhost/nodes/7f691754-1461-483f-8d6b-38bccd955672/ports", "rel": "bookmark"}]}, {"uuid": "35a1fa31-7b98-4194-af5c-5747f2424b6a", "created_at": "2026-04-12T07:46:53.134207+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": "124af0ab-bbb2-493f-965b-51a85162a2f9", "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/35a1fa31-7b98-4194-af5c-5747f2424b6a", "rel": "self"}, {"href": "http://localhost/nodes/35a1fa31-7b98-4194-af5c-5747f2424b6a", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/35a1fa31-7b98-4194-af5c-5747f2424b6a/ports", "rel": "self"}, {"href": "http://localhost/nodes/35a1fa31-7b98-4194-af5c-5747f2424b6a/ports", "rel": "bookmark"}]}, {"uuid": "4d1aca6f-bb2c-4a2b-b502-a635d292365d", "created_at": "2026-04-12T07:46:53.135875+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": "4c0a46b5-1b0a-4cdc-bda1-6d009e4bbae1", "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/4d1aca6f-bb2c-4a2b-b502-a635d292365d", "rel": "self"}, {"href": "http://localhost/nodes/4d1aca6f-bb2c-4a2b-b502-a635d292365d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/4d1aca6f-bb2c-4a2b-b502-a635d292365d/ports", "rel": "self"}, {"href": "http://localhost/nodes/4d1aca6f-bb2c-4a2b-b502-a635d292365d/ports", "rel": "bookmark"}]}], "next": "http://localhost/v1/nodes/detail?sort_key=id&sort_dir=asc&associated=True&limit=3&marker=4d1aca6f-bb2c-4a2b-b502-a635d292365d"} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_cleanhold [0.058885s] ... 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-9d2bd4a7-3a2f-4dfb-8165-b85d2260a250 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_runbook.TestPatch.test_runbook_set_owner_public_system_scope_fails [0.079767s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': 'dcf04995-da9e-4406-b5ae-ecb9e8963507', '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/dcf04995-da9e-4406-b5ae-ecb9e8963507 Openstack-Request-Id: req-334486ec-8ed0-488d-a568-f24429f5bca9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "dcf04995-da9e-4406-b5ae-ecb9e8963507", "created_at": "2026-04-12T07:46:53.195691+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/dcf04995-da9e-4406-b5ae-ecb9e8963507", "rel": "self"}, {"href": "http://localhost/runbooks/dcf04995-da9e-4406-b5ae-ecb9e8963507", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/dcf04995-da9e-4406-b5ae-ecb9e8963507 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-4f680ed6-3b0c-4484-bf45-3ead6a1a7c04 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_name_replace_ok [0.124788s] ... 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-dc7adefe-c488-4a1b-bbe8-e207a8814021 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": "2026-04-12T07:46:53.132383+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_false_field [0.076499s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f26a07cd-09da-4bdd-9b22-9448da117822 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": "2026-04-12T07:46:53.200228+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_node.TestPut.test_unhold_cleanhold_not_allowed [0.070079s] ... 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-aa0b5d63-6594-4d8e-941c-f157653a45fc 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_new_owner_for_project_owned_runbook [0.102563s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '02eced09-f70e-4af4-a8a1-0fea60f4bb1a', '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/02eced09-f70e-4af4-a8a1-0fea60f4bb1a Openstack-Request-Id: req-268a50f3-deee-4a51-ade4-8d9765818993 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "02eced09-f70e-4af4-a8a1-0fea60f4bb1a", "created_at": "2026-04-12T07:46:53.274506+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/02eced09-f70e-4af4-a8a1-0fea60f4bb1a", "rel": "self"}, {"href": "http://localhost/runbooks/02eced09-f70e-4af4-a8a1-0fea60f4bb1a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/02eced09-f70e-4af4-a8a1-0fea60f4bb1a WITH [{'path': '/owner', 'value': 'projectY', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a2b911b6-195f-4a4a-a20e-089b691a9036 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "02eced09-f70e-4af4-a8a1-0fea60f4bb1a", "created_at": "2026-04-12T07:46:53.274506+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectY", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/02eced09-f70e-4af4-a8a1-0fea60f4bb1a", "rel": "self"}, {"href": "http://localhost/runbooks/02eced09-f70e-4af4-a8a1-0fea60f4bb1a", "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_automated_clean_hidden_in_lower_version [0.096839s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f82cddb6-952e-455b-80f7-a20978294b10 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": "2026-04-12T07:46:53.289390+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-380b2696-6cbb-4376-9c8e-d52238a4ee86 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": "2026-04-12T07:46:53.289390+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_deployhold [0.074502s] ... 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-baa2d4b4-c318-486e-9ab5-61630f09044b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.85 {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update [0.147341s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345 WITH [{'path': '/description', 'value': 'foo', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0efe13f8-8e29-4428-b04c-55864fdaa4d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "2d26fb76-85ea-4171-a3a7-a36da063d345", "created_at": "2026-04-12T07:46:53.295038+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/2d26fb76-85ea-4171-a3a7-a36da063d345", "rel": "self"}, {"href": "http://localhost/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345/ports", "rel": "self"}, {"href": "http://localhost/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345/states", "rel": "self"}, {"href": "http://localhost/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345/volume", "rel": "self"}, {"href": "http://localhost/nodes/2d26fb76-85ea-4171-a3a7-a36da063d345/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_owner_system_scope [0.083080s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '14e20d32-42b2-44b0-87fb-ab96fef3454f', '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/14e20d32-42b2-44b0-87fb-ab96fef3454f Openstack-Request-Id: req-d350f169-79b6-45b8-b67d-4e4ed2abd3b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "14e20d32-42b2-44b0-87fb-ab96fef3454f", "created_at": "2026-04-12T07:46:53.374231+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/14e20d32-42b2-44b0-87fb-ab96fef3454f", "rel": "self"}, {"href": "http://localhost/runbooks/14e20d32-42b2-44b0-87fb-ab96fef3454f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/14e20d32-42b2-44b0-87fb-ab96fef3454f WITH [{'path': '/owner', 'value': 'projectX', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-376bc66d-0ee0-46e5-a650-259828f9810d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "14e20d32-42b2-44b0-87fb-ab96fef3454f", "created_at": "2026-04-12T07:46:53.374231+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/14e20d32-42b2-44b0-87fb-ab96fef3454f", "rel": "self"}, {"href": "http://localhost/runbooks/14e20d32-42b2-44b0-87fb-ab96fef3454f", "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_automated_clean_null_field [0.085819s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7627c340-02e1-4ccb-9f8c-61e9ffbd7277 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": "2026-04-12T07:46:53.376718+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_automated_clean_true_field [0.043786s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cdfb965a-fc8a-4933-a4de-a5acc2aba0e4 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": "2026-04-12T07:46:53.452832+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_deployhold_not_allowed [0.116067s] ... 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-7ce9dadb-5895-4e47-adc4-32fbdebaae59 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_owner_system_scope_fails_if_public [0.078387s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': '65277a36-ae4f-43fc-9018-921ddfb4cd11', '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/65277a36-ae4f-43fc-9018-921ddfb4cd11 Openstack-Request-Id: req-a64b482d-dcb0-4e01-9da6-5da3e0e251a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "65277a36-ae4f-43fc-9018-921ddfb4cd11", "created_at": "2026-04-12T07:46:53.472425+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/65277a36-ae4f-43fc-9018-921ddfb4cd11", "rel": "self"}, {"href": "http://localhost/runbooks/65277a36-ae4f-43fc-9018-921ddfb4cd11", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/65277a36-ae4f-43fc-9018-921ddfb4cd11 WITH [{'path': '/owner', 'value': 'projectX', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f14b8523-2500-4ce4-aae9-9f3948dcd690 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_bios_hidden_in_lower_version [0.081285s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-249397fe-5ef8-4301-9158-e5eac748f502 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": "2026-04-12T07:46:53.503086+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-4faf943b-41c3-4bf9-a60e-da888575c78f 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": "2026-04-12T07:46:53.503086+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_project_owned_runbook_public [0.127246s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE1', 'uuid': 'ea1b95dc-3208-45be-9bf5-59bbc3741eb0', '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/ea1b95dc-3208-45be-9bf5-59bbc3741eb0 Openstack-Request-Id: req-a43b4fda-7d33-4df1-9367-011d227ee483 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ea1b95dc-3208-45be-9bf5-59bbc3741eb0", "created_at": "2026-04-12T07:46:53.555779+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/ea1b95dc-3208-45be-9bf5-59bbc3741eb0", "rel": "self"}, {"href": "http://localhost/runbooks/ea1b95dc-3208-45be-9bf5-59bbc3741eb0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/ea1b95dc-3208-45be-9bf5-59bbc3741eb0 WITH [{'path': '/public', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9f7c538c-ba40-4a7a-bdc6-57f60cab3845 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ea1b95dc-3208-45be-9bf5-59bbc3741eb0", "created_at": "2026-04-12T07:46:53.555779+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/ea1b95dc-3208-45be-9bf5-59bbc3741eb0", "rel": "self"}, {"href": "http://localhost/runbooks/ea1b95dc-3208-45be-9bf5-59bbc3741eb0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra [0.238818s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/e5260208-307d-4eb1-91b5-df98795dba35 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-339f946a-71d7-4fb5-8999-c94542633f58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "e5260208-307d-4eb1-91b5-df98795dba35", "created_at": "2026-04-12T07:46:53.485349+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/e5260208-307d-4eb1-91b5-df98795dba35", "rel": "self"}, {"href": "http://localhost/nodes/e5260208-307d-4eb1-91b5-df98795dba35", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e5260208-307d-4eb1-91b5-df98795dba35/ports", "rel": "self"}, {"href": "http://localhost/nodes/e5260208-307d-4eb1-91b5-df98795dba35/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e5260208-307d-4eb1-91b5-df98795dba35/states", "rel": "self"}, {"href": "http://localhost/nodes/e5260208-307d-4eb1-91b5-df98795dba35/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e5260208-307d-4eb1-91b5-df98795dba35/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e5260208-307d-4eb1-91b5-df98795dba35/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e5260208-307d-4eb1-91b5-df98795dba35/volume", "rel": "self"}, {"href": "http://localhost/nodes/e5260208-307d-4eb1-91b5-df98795dba35/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode [0.088057s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/61863247-9595-4d44-8475-ff072f588567 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fe502c8b-d7a1-4375-ad7e-a495304ea2bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "61863247-9595-4d44-8475-ff072f588567", "created_at": "2026-04-12T07:46:53.592829+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/61863247-9595-4d44-8475-ff072f588567", "rel": "self"}, {"href": "http://localhost/nodes/61863247-9595-4d44-8475-ff072f588567", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/61863247-9595-4d44-8475-ff072f588567/ports", "rel": "self"}, {"href": "http://localhost/nodes/61863247-9595-4d44-8475-ff072f588567/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/61863247-9595-4d44-8475-ff072f588567/states", "rel": "self"}, {"href": "http://localhost/nodes/61863247-9595-4d44-8475-ff072f588567/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/61863247-9595-4d44-8475-ff072f588567/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/61863247-9595-4d44-8475-ff072f588567/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/61863247-9595-4d44-8475-ff072f588567/volume", "rel": "self"}, {"href": "http://localhost/nodes/61863247-9595-4d44-8475-ff072f588567/volume", "rel": "bookmark"}]} GET /v1/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-369da9d7-fcf0-4c10-ac11-16f7a5156ffb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "06e6c2b5-2b97-4b78-90ac-26957b66a5ef", "created_at": "2026-04-12T07:46:53.623244+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/06e6c2b5-2b97-4b78-90ac-26957b66a5ef", "rel": "self"}, {"href": "http://localhost/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef/ports", "rel": "self"}, {"href": "http://localhost/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef/states", "rel": "self"}, {"href": "http://localhost/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef/volume", "rel": "self"}, {"href": "http://localhost/nodes/06e6c2b5-2b97-4b78-90ac-26957b66a5ef/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_hidden_in_lower_version [0.073261s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68362ed8-b8fa-424f-bce6-c528e8e17e80 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": "2026-04-12T07:46:53.675938+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-003bfad0-f345-4589-91a8-5f329f9215c2 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": "2026-04-12T07:46:53.675938+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_boot_mode_null_field [0.061305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ddc5e851-b60c-4239-ac8e-e56de42010d1 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": "2026-04-12T07:46:53.755905+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_set_public_system_scope [0.176081s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/13616d20-302f-46c2-85a9-344dd07ae600 WITH [{'path': '/public', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-37e10282-d3b4-4523-8cdb-06a0f3e4dce7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "13616d20-302f-46c2-85a9-344dd07ae600", "created_at": "2026-04-12T07:46:53.714143+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/13616d20-302f-46c2-85a9-344dd07ae600", "rel": "self"}, {"href": "http://localhost/runbooks/13616d20-302f-46c2-85a9-344dd07ae600", "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_by_instance_uuid [0.066276s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?instance_uuid=301a3682-5e05-4199-92b0-40cd589fbb42 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-76ea8759-e075-450e-9df2-ffe932a9db7a 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": "1d7a15cc-75b6-4329-bb29-5173e498e872", "instance_uuid": "301a3682-5e05-4199-92b0-40cd589fbb42", "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/1d7a15cc-75b6-4329-bb29-5173e498e872", "rel": "self"}, {"href": "http://localhost/nodes/1d7a15cc-75b6-4329-bb29-5173e498e872", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_extra_and_instance_info [0.254562s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57 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-36d34cd2-d46e-4d55-9747-993966fb8056 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "8eb958bb-1483-432e-8ee7-0373e83fed57", "created_at": "2026-04-12T07:46:53.752033+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/8eb958bb-1483-432e-8ee7-0373e83fed57", "rel": "self"}, {"href": "http://localhost/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57/ports", "rel": "self"}, {"href": "http://localhost/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57/states", "rel": "self"}, {"href": "http://localhost/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57/volume", "rel": "self"}, {"href": "http://localhost/nodes/8eb958bb-1483-432e-8ee7-0373e83fed57/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_node.TestPut.test_unhold_servicehold [0.403057s] ... 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-b906dfc7-c92b-475a-834a-353635ce5d77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.86 {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_by_instance_uuid_invalid_uuid [0.049781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?instance_uuid=fake WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-26b5150c-c59b-4e95-8df0-3cacf43af76d 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_node.TestPut.test_unrescue_raises_error_before_1_38 [0.059122s] ... 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-679991d2-58fa-46f5-bb35-5b17452bc63f 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_node_by_instance_uuid_wrong_uuid [0.055391s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?instance_uuid=29726fb1-6c95-4a15-b20b-0bc45b9eba1a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-18ddb088-7509-489a-ab3d-418f748f75ce 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_port.TestListPortsByShard.test_get_by_shard_multi [0.082566s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?shard=shard1,shard2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4d690813-9a6f-4e17-b6ad-7b2d2b2ee59e 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": "e257e340-5435-4b63-aca2-a8789fd371fb", "address": "aa:bb:cc:dd:ee:ff", "links": [{"href": "http://localhost/v1/ports/e257e340-5435-4b63-aca2-a8789fd371fb", "rel": "self"}, {"href": "http://localhost/ports/e257e340-5435-4b63-aca2-a8789fd371fb", "rel": "bookmark"}]}, {"uuid": "3305aca9-7edd-4e69-9b10-9c364216cddb", "address": "ab:bb:cc:dd:ee:ff", "links": [{"href": "http://localhost/v1/ports/3305aca9-7edd-4e69-9b10-9c364216cddb", "rel": "self"}, {"href": "http://localhost/ports/3305aca9-7edd-4e69-9b10-9c364216cddb", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_conductor_group_hidden_in_lower_version [0.083759s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-27241b14-d4e6-4a97-b251-a11949a9ee04 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": "2026-04-12T07:46:53.993840+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-4ef721e6-2584-42c7-9c7b-565c0bfa96e9 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": "2026-04-12T07:46:53.993840+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"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_and_extra [0.213142s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/00231871-330e-4248-84ba-ce011df1accf 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-62b5837d-20e1-4543-9ac3-6526ae03fa1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "00231871-330e-4248-84ba-ce011df1accf", "created_at": "2026-04-12T07:46:53.980540+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/00231871-330e-4248-84ba-ce011df1accf", "rel": "self"}, {"href": "http://localhost/nodes/00231871-330e-4248-84ba-ce011df1accf", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/00231871-330e-4248-84ba-ce011df1accf/ports", "rel": "self"}, {"href": "http://localhost/nodes/00231871-330e-4248-84ba-ce011df1accf/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/00231871-330e-4248-84ba-ce011df1accf/states", "rel": "self"}, {"href": "http://localhost/nodes/00231871-330e-4248-84ba-ce011df1accf/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/00231871-330e-4248-84ba-ce011df1accf/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/00231871-330e-4248-84ba-ce011df1accf/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/00231871-330e-4248-84ba-ce011df1accf/volume", "rel": "self"}, {"href": "http://localhost/nodes/00231871-330e-4248-84ba-ce011df1accf/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_unset_public_system_scope [0.305418s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_UNIQUE2', 'uuid': '13a423e3-d897-4874-b6c2-cca23cdb7098', '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/13a423e3-d897-4874-b6c2-cca23cdb7098 Openstack-Request-Id: req-e117be50-00ae-4ca3-b1a3-7c4dace7680f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "13a423e3-d897-4874-b6c2-cca23cdb7098", "created_at": "2026-04-12T07:46:53.951799+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE2", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/13a423e3-d897-4874-b6c2-cca23cdb7098", "rel": "self"}, {"href": "http://localhost/runbooks/13a423e3-d897-4874-b6c2-cca23cdb7098", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} PATCH /v1/runbooks/13a423e3-d897-4874-b6c2-cca23cdb7098 WITH [{'path': '/public', 'value': False, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f250819b-aa79-41d0-b035-81aa07dc5fb1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "13a423e3-d897-4874-b6c2-cca23cdb7098", "created_at": "2026-04-12T07:46:53.951799+00:00", "updated_at": null, "name": "CUSTOM_UNIQUE2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/13a423e3-d897-4874-b6c2-cca23cdb7098", "rel": "self"}, {"href": "http://localhost/runbooks/13a423e3-d897-4874-b6c2-cca23cdb7098", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestListPortsByShard.test_get_by_shard_single [0.096852s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?shard=test_shard WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b156c174-2889-4ba8-97a3-0bbb1ce7fa3f 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": "25fe7d4d-5028-4814-a8d6-21d1b76bb6fd", "address": "aa:bb:cc:dd:ee:ff", "links": [{"href": "http://localhost/v1/ports/25fe7d4d-5028-4814-a8d6-21d1b76bb6fd", "rel": "self"}, {"href": "http://localhost/ports/25fe7d4d-5028-4814-a8d6-21d1b76bb6fd", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_conductor_hidden_in_lower_version [0.131329s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a9db5f10-a050-4ff1-adb1-1971bc6c6035 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": "2026-04-12T07:46:54.111077+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-ba029686-65b9-4e3c-8f07-dc16ef2a930e 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": "2026-04-12T07:46:54.111077+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.TestPatch.test_patch_policy_update_generic_and_instance_info [0.172418s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/a0003ded-5584-4887-93f0-87ab385a54f8 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-58b4394a-e0c8-420e-80ff-59191f84cef1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "a0003ded-5584-4887-93f0-87ab385a54f8", "created_at": "2026-04-12T07:46:54.162009+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/a0003ded-5584-4887-93f0-87ab385a54f8", "rel": "self"}, {"href": "http://localhost/nodes/a0003ded-5584-4887-93f0-87ab385a54f8", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/a0003ded-5584-4887-93f0-87ab385a54f8/ports", "rel": "self"}, {"href": "http://localhost/nodes/a0003ded-5584-4887-93f0-87ab385a54f8/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a0003ded-5584-4887-93f0-87ab385a54f8/states", "rel": "self"}, {"href": "http://localhost/nodes/a0003ded-5584-4887-93f0-87ab385a54f8/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a0003ded-5584-4887-93f0-87ab385a54f8/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a0003ded-5584-4887-93f0-87ab385a54f8/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a0003ded-5584-4887-93f0-87ab385a54f8/volume", "rel": "self"}, {"href": "http://localhost/nodes/a0003ded-5584-4887-93f0-87ab385a54f8/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestListPortsByShard.test_get_by_shard_single_fail_api_version [0.127945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?shard=test_shard WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-d5c0ffaf-c7f1-4f94-9807-7a3a424d1440 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_deploy_step_hidden_in_lower_version [0.119120s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3d79cc3c-f614-4572-bd9a-5b4d4cb2fe19 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": "2026-04-12T07:46:54.240070+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-697bee0c-2825-4cca-b1e2-4281fdff996b 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": "2026-04-12T07:46:54.240070+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_runbook.TestPatch.test_update_by_id [0.204859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/92a72a2b-8236-4381-8d08-684093da6769 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-989be822-4e9f-4f77-be0c-d3dae28b297d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "92a72a2b-8236-4381-8d08-684093da6769", "created_at": "2026-04-12T07:46:54.222419+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/92a72a2b-8236-4381-8d08-684093da6769", "rel": "self"}, {"href": "http://localhost/runbooks/92a72a2b-8236-4381-8d08-684093da6769", "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_description_null_field [0.045338s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a4a8616a-dd19-4946-84ed-daa9054c5f56 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": "2026-04-12T07:46:54.313595+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_runbook.TestPatch.test_update_by_id_invalid_api_version [0.055683s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/c27f5f91-3f6d-47cb-8c5d-ab891516d5f5 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.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type [0.140326s] ... 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-76facd8a-cbc7-4f6a-a422-918266d65d8b 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": "2026-04-12T07:46:54.327006+00:00", "updated_at": "2026-04-12T07:46:54.397820+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} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_fault_hidden_in_lower_version [0.102731s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b5777500-ee0e-4b18-9ac5-7e581e852428 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": "2026-04-12T07:46:54.375606+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-8a5f4ad1-7d59-499a-bc29-4ad07dfcdf9b 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": "2026-04-12T07:46:54.375606+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_by_name [0.067077s] ... 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-860a180b-4cfd-4719-ae74-457584f01a01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f3e18da9-8cc2-424e-860c-8a85ecd9ebd9", "created_at": "2026-04-12T07:46:54.410572+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/f3e18da9-8cc2-424e-860c-8a85ecd9ebd9", "rel": "self"}, {"href": "http://localhost/runbooks/f3e18da9-8cc2-424e-860c-8a85ecd9ebd9", "rel": "bookmark"}], "steps": [{"interface": "bios", "step": "apply_configuration", "args": {"foo": "bar"}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_generic_extra_instance_info [0.172493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/c98ed917-449b-4844-ba76-2b34839cb045 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-a1ff2e5d-7b39-4e6a-8c5b-bead5f1fb62a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "c98ed917-449b-4844-ba76-2b34839cb045", "created_at": "2026-04-12T07:46:54.328391+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/c98ed917-449b-4844-ba76-2b34839cb045", "rel": "self"}, {"href": "http://localhost/nodes/c98ed917-449b-4844-ba76-2b34839cb045", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c98ed917-449b-4844-ba76-2b34839cb045/ports", "rel": "self"}, {"href": "http://localhost/nodes/c98ed917-449b-4844-ba76-2b34839cb045/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c98ed917-449b-4844-ba76-2b34839cb045/states", "rel": "self"}, {"href": "http://localhost/nodes/c98ed917-449b-4844-ba76-2b34839cb045/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c98ed917-449b-4844-ba76-2b34839cb045/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c98ed917-449b-4844-ba76-2b34839cb045/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c98ed917-449b-4844-ba76-2b34839cb045/volume", "rel": "self"}, {"href": "http://localhost/nodes/c98ed917-449b-4844-ba76-2b34839cb045/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_local_link_connection_network_type_old_api [0.040839s] ... 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-5c889b1f-b461-40f4-b268-f86e32020621 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_by_name_old_api_version [0.036222s] ... 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\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_inspect_wait_state_between_api_versions [0.108974s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-abc3504f-56b0-4690-a4b4-94bc4b85516c 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": "2026-04-12T07:46:54.497049+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-16aef46a-b274-43d0-8d8f-efd66cd10822 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": "2026-04-12T07:46:54.497049+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_port.TestPatch.test_add_multi [0.110173s] ... 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-f17b77c2-77f4-48ce-a8e7-a4a1a7d99c5a 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": "2026-04-12T07:46:54.472441+00:00", "updated_at": "2026-04-12T07:46:54.547845+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_name_standard_trait [0.092746s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/4c3e5e8b-5127-479e-a56e-d0757328a160 WITH [{'path': '/name', 'value': 'HW_CPU_X86_VMX', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-12209908-d3b3-4ced-a1a2-89622041f1fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4c3e5e8b-5127-479e-a56e-d0757328a160", "created_at": "2026-04-12T07:46:54.522737+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/4c3e5e8b-5127-479e-a56e-d0757328a160", "rel": "self"}, {"href": "http://localhost/runbooks/4c3e5e8b-5127-479e-a56e-d0757328a160", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_policy_update_instance_info [0.155366s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91 WITH [{'path': '/instance_info/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d3b9376a-4068-469c-a945-ea68cc35a142 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {"uuid": "1dce1d78-84a0-44ba-a88d-32b82161fc91", "created_at": "2026-04-12T07:46:54.482671+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/1dce1d78-84a0-44ba-a88d-32b82161fc91", "rel": "self"}, {"href": "http://localhost/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91/ports", "rel": "self"}, {"href": "http://localhost/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91/states", "rel": "self"}, {"href": "http://localhost/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91/volume", "rel": "self"}, {"href": "http://localhost/nodes/1dce1d78-84a0-44ba-a88d-32b82161fc91/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_not_found [0.048414s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/58ca1540-fa0e-4716-86a2-9255760a07c5 WITH [{'path': '/name', 'value': 'CUSTOM_DT2', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-99fecea1-dd6d-4fc2-bcab-b4dfdec24e91 X-Openstack-Ironic-Api-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 58ca1540-fa0e-4716-86a2-9255760a07c5 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_id [0.071039s] ... 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-d12e30d1-ab4b-4856-bea8-891385eba993 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_interface_fields_hidden_in_lower_version [0.090339s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ad81e932-0ea4-4f06-b319-5a799bba8bdf 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": "2026-04-12T07:46:54.603890+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_project_scope [0.064999s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/9d419e91-2385-4410-a94e-b8a5e50dc415 WITH [{'path': '/name', 'value': 'CUSTOM_NAME', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d20bce1a-00e7-4bdf-a433-d84b29b8b87d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9d419e91-2385-4410-a94e-b8a5e50dc415", "created_at": "2026-04-12T07:46:54.646495+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/9d419e91-2385-4410-a94e-b8a5e50dc415", "rel": "self"}, {"href": "http://localhost/runbooks/9d419e91-2385-4410-a94e-b8a5e50dc415", "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_lessee_hidden_in_lower_version [0.070824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fb6b5417-c5ff-4cb7-a2e2-dbd98010ad9d 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": "2026-04-12T07:46:54.685777+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-bd495d24-893d-4fb9-ac94-0caa702f3ede 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": "2026-04-12T07:46:54.685777+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.TestPatch.test_patch_policy_update_none [0.131301s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025 WITH [] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e2675be8-82b5-4ba4-9108-5ea07f5403a2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0387c15e-e4cd-4b29-b05b-7aaf55fbd025", "created_at": "2026-04-12T07:46:54.649167+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/0387c15e-e4cd-4b29-b05b-7aaf55fbd025", "rel": "self"}, {"href": "http://localhost/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025/ports", "rel": "self"}, {"href": "http://localhost/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025/states", "rel": "self"}, {"href": "http://localhost/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025/volume", "rel": "self"}, {"href": "http://localhost/nodes/0387c15e-e4cd-4b29-b05b-7aaf55fbd025/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_node_uuid [0.110743s] ... 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-4c3fb6c7-3cbd-4aba-9e8e-b8b63956901d 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": "2026-04-12T07:46:54.675697+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPatch.test_update_system_scope [0.090865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/ffb0f8a1-ec9b-45f9-a5e3-02483c7b1eb0 WITH [{'path': '/name', 'value': 'CUSTOM_NAME', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a9f47104-205f-4770-bb7d-2cf226d4bf60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ffb0f8a1-ec9b-45f9-a5e3-02483c7b1eb0", "created_at": "2026-04-12T07:46:54.725229+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/ffb0f8a1-ec9b-45f9-a5e3-02483c7b1eb0", "rel": "self"}, {"href": "http://localhost/runbooks/ffb0f8a1-ec9b-45f9-a5e3-02483c7b1eb0", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_portgroups_subresource [0.068566s] ... 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-f35d3c5e-5a52-4feb-999a-fd26a1b1ec29 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.controllers.v1.test_port.TestPatch.test_add_physical_network [0.108124s] ... 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-1b324bc7-56c1-405c-83cb-189ee01b1684 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": "2026-04-12T07:46:54.772361+00:00", "updated_at": "2026-04-12T07:46:54.833365+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.controllers.v1.test_runbook.TestPost.test_create [0.103584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '06a8235e-074b-4e8a-a35d-b574c09ee6f8', '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/06a8235e-074b-4e8a-a35d-b574c09ee6f8 Openstack-Request-Id: req-bc004399-18dd-47a6-be51-08c3924c9275 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "06a8235e-074b-4e8a-a35d-b574c09ee6f8", "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/06a8235e-074b-4e8a-a35d-b574c09ee6f8", "rel": "self"}, {"href": "http://localhost/runbooks/06a8235e-074b-4e8a-a35d-b574c09ee6f8", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/06a8235e-074b-4e8a-a35d-b574c09ee6f8 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-083fffd6-b84b-4461-bdfe-6de1e1df5a06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "06a8235e-074b-4e8a-a35d-b574c09ee6f8", "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/06a8235e-074b-4e8a-a35d-b574c09ee6f8", "rel": "self"}, {"href": "http://localhost/runbooks/06a8235e-074b-4e8a-a35d-b574c09ee6f8", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource [0.092700s] ... 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-4bb11203-91bc-4840-8faa-5edfffd85564 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_port.TestPatch.test_add_physical_network_old_api_version [0.062362s] ... 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-b533830e-b3c6-4851-a532-b0fd58cfbb50 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.controllers.v1.test_runbook.TestPost.test_create_complex_step_args [0.046907s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'bc58bba0-aaad-4125-a7b0-a60df81be3fa', '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/bc58bba0-aaad-4125-a7b0-a60df81be3fa Openstack-Request-Id: req-7a71647f-d7c1-42c1-a21c-26dbd8f46338 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "bc58bba0-aaad-4125-a7b0-a60df81be3fa", "created_at": "2026-04-12T07:46:54.920376+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/bc58bba0-aaad-4125-a7b0-a60df81be3fa", "rel": "self"}, {"href": "http://localhost/runbooks/bc58bba0-aaad-4125-a7b0-a60df81be3fa", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"foo": [{"bar": "baz"}]}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_ports_subresource_no_port_id [0.058203s] ... 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-8176ca10-069a-4e13-8763-d93eb9e305ca 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.controllers.v1.test_port.TestPatch.test_add_physical_network_upgrade [0.055854s] ... 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-a677684a-24e3-4664-aef5-d7bcf468e403 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.controllers.v1.test_runbook.TestPost.test_create_doesnt_contain_id [0.105089s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'b01c83ac-bc8c-4876-925e-00babf19b715', '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/b01c83ac-bc8c-4876-925e-00babf19b715 Openstack-Request-Id: req-db8d2e14-a8dd-4b58-85d3-5fa5d001b90d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b01c83ac-bc8c-4876-925e-00babf19b715", "created_at": "2026-04-12T07:46:55.020000+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/b01c83ac-bc8c-4876-925e-00babf19b715", "rel": "self"}, {"href": "http://localhost/runbooks/b01c83ac-bc8c-4876-925e-00babf19b715", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/b01c83ac-bc8c-4876-925e-00babf19b715 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-997b7f9d-a220-40c0-a041-e724a5207967 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b01c83ac-bc8c-4876-925e-00babf19b715", "created_at": "2026-04-12T07:46:55.020000+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/b01c83ac-bc8c-4876-925e-00babf19b715", "rel": "self"}, {"href": "http://localhost/runbooks/b01c83ac-bc8c-4876-925e-00babf19b715", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_error [0.041179s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '3fe94acd-d9b4-4c82-b914-b049326fa4e9', '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-82a5e84a-4e63-4a75-9c7a-2f1994068dab X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_null_field [0.370183s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d9bbb6aa-58f1-4e39-85d4-fb58bfb821d8 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": "2026-04-12T07:46:55.062000+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_port.TestPatch.test_add_portgroup_uuid [0.125919s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': '5793d87c-49b6-4aa1-b8a3-feb39b0e2562', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ff07bc25-28a1-4a28-94f2-e15612e7e6e3 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": "2026-04-12T07:46:55.025066+00:00", "updated_at": "2026-04-12T07:46:55.085908+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": "5793d87c-49b6-4aa1-b8a3-feb39b0e2562"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_drive_console_enabled [0.157748s] ... 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-30ee07a8-474a-4bd0-87f2-afc5c9cce3a1 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_generate_uuid [0.073852s] ... 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/b3f74eec-8fc2-4398-83dd-cc0837392294 Openstack-Request-Id: req-60e65b3a-2f0d-4709-8953-2e1f6a0f20d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b3f74eec-8fc2-4398-83dd-cc0837392294", "created_at": "2026-04-12T07:46:55.135881+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/b3f74eec-8fc2-4398-83dd-cc0837392294", "rel": "self"}, {"href": "http://localhost/runbooks/b3f74eec-8fc2-4398-83dd-cc0837392294", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/b3f74eec-8fc2-4398-83dd-cc0837392294 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-131e78eb-9e69-4156-ac7f-10d1ce958785 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b3f74eec-8fc2-4398-83dd-cc0837392294", "created_at": "2026-04-12T07:46:55.135881+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/b3f74eec-8fc2-4398-83dd-cc0837392294", "rel": "self"}, {"href": "http://localhost/runbooks/b3f74eec-8fc2-4398-83dd-cc0837392294", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} None {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_lessee_present [0.086368s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-90dc8ddd-fb40-4d87-95e6-811d20849483 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": "2026-04-12T07:46:55.138520+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_api_version [0.033282s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '8765025c-064a-4a74-9a98-8d8c01fc9b59', '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\"}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_both_invalid [0.086745s] ... 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-0d7e5df8-6c5c-4868-afc2-c0562c091703 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}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_add_root [0.110327s] ... 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-56d19aac-2b1b-4536-b3ce-502269a7f947 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": "2026-04-12T07:46:55.163828+00:00", "updated_at": "2026-04-12T07:46:55.201812+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_node.TestListNodes.test_node_network_data [0.049873s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-11ddb6ad-7f2f-4e19-b551-4e6413178683 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.66 {"uuid": "8511699e-e6fe-4edc-9b1d-c1c5e0791bd9", "created_at": "2026-04-12T07:46:55.201787+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/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9", "rel": "self"}, {"href": "http://localhost/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9/ports", "rel": "self"}, {"href": "http://localhost/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9/states", "rel": "self"}, {"href ": "http://localhost/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9/volume", "rel": "self"}, {"href": "http://localhost/nodes/8511699e-e6fe-4edc-9b1d-c1c5e0791bd9/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_empty_steps [0.037476s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '34dc1f5e-47a1-4ecd-9131-e4c1f3453529', 'steps': [], 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f98a7b24-9ae9-484b-9506-aae5247dda9e X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_update_name_twice_second_invalid [0.059726s] ... 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-e0305567-a407-4b8b-a37b-a89100f1a21f 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.controllers.v1.test_port.TestPatch.test_add_root_non_existent [0.044706s] ... 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-ffe11bda-ec2e-4a2d-82a9-f36bb06c3535 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.controllers.v1.test_runbook.TestPost.test_create_invalid_field_extra [0.096204s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '38b01951-4982-4b19-87a3-1a57bb48b652', '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-cb5f48fa-8fb3-482c-9731-81dbbf6cfba9 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_network_data_hidden_in_lower_version [0.104054s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8696fd3-b68f-4a16-9f7e-23af59058a2b 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": "2026-04-12T07:46:55.293111+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-94209488-cf56-46c3-a716-9afecd88dd78 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": "2026-04-12T07:46:55.293111+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_foo [0.037377s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'ae7a30be-d3a4-42ce-be49-c541e1972145', '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-b537a327-c701-4f1f-b4bd-11091688560b X-Openstack-Ironic-Api-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.TestPatch.test_patch_volume_connectors_subresource [0.119246s] ... 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-80312739-08fa-4882-9720-d87f407989d2 X-Openstack-Ironic-Api-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_port.TestPatch.test_invalid_physnet_empty_string [0.130055s] ... 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-5384acf7-ac34-439a-a874-7ccba8e7cc58 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_hidden_in_lower_version [0.060247s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7ca24185-55f6-46ae-8e9b-8f596aa4c068 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": "2026-04-12T07:46:55.355215+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-8d513cec-cf6b-4c47-9628-21785ac23596 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": "2026-04-12T07:46:55.355215+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_name [0.058520s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 1, 'uuid': 'd052d3ee-80a7-435e-85bf-f4a952b91d87', '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-edf90a51-adbe-47e4-ae15-2d2a5ed18ffc X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_name_none [0.055362s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': None, 'uuid': '8a5be283-4e9d-47aa-b906-6851c02f1b9e', '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-51cae86e-d6d9-47b4-a92e-b607df1a765a X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_null_field [0.095642s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ba3859a9-74b2-4cff-bd09-aec2c1804208 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": "2026-04-12T07:46:55.448970+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_owner_present [0.065875s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a8f1533b-d77b-491e-b45c-8ff919f08ca0 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": "2026-04-12T07:46:55.524211+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_port.TestPatch.test_invalid_physnet_non_text [0.179434s] ... 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-df51f076-2ac7-4ca8-9292-d517e7c57ac3 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_field_steps [0.097010s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'f606c4e5-3afd-4ad7-b942-6d1f2d1a1aa8', 'steps': {}, 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-54ae8d11-1e41-431b-b0fb-2c6281e3ca46 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected [0.105645s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-795499de-5754-4439-a012-3827e1bd147c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "12adeb6d-50e0-42b8-a481-008a50ec3fe8", "created_at": "2026-04-12T07:46:55.622135+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/12adeb6d-50e0-42b8-a481-008a50ec3fe8", "rel": "self"}, {"href": "http://localhost/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8/ports", "rel": "self"}, {"href": "http://localhost/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8/states", "rel": "self"}, {"href": "http://localhost/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8/volume", "rel": "self"}, {"href": "http://localhost/nodes/12adeb6d-50e0-42b8-a481-008a50ec3fe8/volume", "rel": "bookmark"}]} GET /v1/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b2bff326-8e9a-46d0-975b-476f30d8ffe5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "206acbb4-10ee-4484-bdee-fc2a1e933e71", "created_at": "2026-04-12T07:46:55.646321+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/206acbb4-10ee-4484-bdee-fc2a1e933e71", "rel": "self"}, {"href": "http://localhost/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71/ports", "rel": "self"}, {"href": "http://localhost/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71/states", "rel": "self"}, {"href": "http://localhost/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71/volume", "rel": "self"}, {"href": "http://localhost/nodes/206acbb4-10ee-4484-bdee-fc2a1e933e71/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_args1 [0.116003s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'b1f14bc7-d7c7-4bfc-9af2-bfd8e30bc8de', '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-9e8464ab-9b29-405e-a611-6324a8c6c7d2 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_invalid_physnet_too_long [0.142672s] ... 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-c0a0252d-7470-4f6a-8616-7d457da7b456 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_args2 [0.044040s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '0faffbc8-ec8b-4e96-beb1-1fca54d5b5fa', '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-92f90c2c-8bd7-43ab-a175-063bc320ef16 X-Openstack-Ironic-Api-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_node_protected_hidden_in_lower_version [0.076020s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a43661ac-de0c-43e6-9f07-ae1237a0d0c0 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": "2026-04-12T07:46:55.722790+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-f1ecf5b0-a613-4967-891f-5b2ca617c24f 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": "2026-04-12T07:46:55.722790+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_port.TestPatch.test_portgroups_subresource_patch [0.057810s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/b256b774-b7bc-4361-83db-a3ffc302e200 WITH [{'path': '/address', 'value': '00:00:00:00:00:00', 'op': 'replace'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-56748059-b537-48be-bf9b-8c43f585d0f8 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.TestPost.test_create_invalid_step_field_foo [0.036059s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '012f1075-c4e1-44df-8d3b-7d454536aeb2', '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-61f6eec5-a6ba-4224-9b82-323039808d15 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_interface1 [0.053502s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '754fad9a-fbfc-4e4d-84b5-dde0a8cd5605', '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-b6013d3d-b2b1-444c-8ff0-9e2a23011ee0 X-Openstack-Ironic-Api-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_node_protected_reason_hidden_in_lower_version [0.109113s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3e8138e9-5986-440e-8dad-972bd6e5589a 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": "2026-04-12T07:46:55.805003+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-cb43fbd0-be1c-4604-81b0-d1575295fd7e 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": "2026-04-12T07:46:55.805003+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.TestPost.test_create_invalid_step_field_interface2 [0.037585s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'fa5f8008-8a61-459d-b7fa-c4568526858a', '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-a9f1811a-f156-48b9-b49c-25656fd35dd0 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type [0.121008s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/219f2404-4c47-440c-b91d-d645f6f7e353 WITH [{'path': '/local_link_connection/network_type', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-09196012-5c61-4245-a9b2-09fae60ea27a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.64 {"uuid": "219f2404-4c47-440c-b91d-d645f6f7e353", "created_at": "2026-04-12T07:46:55.830255+00:00", "updated_at": "2026-04-12T07:46:55.881793+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/219f2404-4c47-440c-b91d-d645f6f7e353", "rel": "self"}, {"href": "http://localhost/ports/219f2404-4c47-440c-b91d-d645f6f7e353", "rel": "bookmark"}], "portgroup_uuid": null} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_negative_order [0.040809s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '6c7609ba-e736-47ca-aa66-1b44ad11bc0e', '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-977a5643-5756-46a1-8ab2-f58aeb8255ee X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_connectors_subresource_no_connector_id [0.556868s] ... 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-d607ed74-ee33-4a88-b6bb-d1ab6d40bab9 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_protected_with_reason [0.148667s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0c64b136-67e7-4802-ac4b-e1cc66be7c92 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": "2026-04-12T07:46:55.958700+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_order [0.099620s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '789c5638-66c6-4270-96eb-0172d87b4fc4', '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-62492481-89ef-4219-bc1f-bc50603c28ed X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_network_type_old_api [0.174723s] ... 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-26765e83-181d-4326-a1b6-def75476be6c 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_patch_volume_targets_subresource [0.166457s] ... 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-4a4587b8-8201-4790-ab57-1af2cd62bde0 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_invalid_step_field_step [0.101592s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '05d74d2c-d99f-4f5e-8a6c-2faacefca100', '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-7add677f-3888-4e77-a968-e21ccad0232e X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_local_link_connection_old_api [0.050283s] ... 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-39ff2200-c25a-4735-88ac-2d49dbf158d5 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_node_retired [0.115077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-14b7c597-dcdc-46d5-a2d0-bbe17c4bb4da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "503ae816-3340-4ac6-b8ec-c4b646f55a00", "created_at": "2026-04-12T07:46:56.087779+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/503ae816-3340-4ac6-b8ec-c4b646f55a00", "rel": "self"}, {"href": "http://localhost/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00/ports", "rel": "self"}, {"href": "http://localhost/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00/states", "rel": "self"}, {"href": "http://localhost/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00/volume", "rel": "self"}, {"href": "http://localhost/nodes/503ae816-3340-4ac6-b8ec-c4b646f55a00/volume", "rel": "bookmark"}]} GET /v1/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0ab83f33-6ac6-469d-a3af-30cff19b064f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "2ee7a002-4394-444e-9a0e-72e2721fb9ae", "created_at": "2026-04-12T07:46:56.102361+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/2ee7a002-4394-444e-9a0e-72e2721fb9ae", "rel": "self"}, {"href": "http://localhost/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae/ports", "rel": "self"}, {"href": "http://localhost/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae/states", "rel": "self"}, {"href": "http://localhost/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae/volume", "rel": "self"}, {"href": "http://localhost/nodes/2ee7a002-4394-444e-9a0e-72e2721fb9ae/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_id [0.063835s] ... 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-af2f1d28-ac3c-4047-bd12-afecfef9ea1e 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_hidden_in_lower_version [0.076564s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-88b8ad31-6187-427f-91cb-e6331c5c9df4 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": "2026-04-12T07:46:56.173047+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-8f54c993-eaa4-4a44-9448-ac317913e4fb 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": "2026-04-12T07:46:56.173047+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.TestPost.test_create_long_name [0.115028s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': 'e1294280-3382-4cf4-82ee-779871144f8c', '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/e1294280-3382-4cf4-82ee-779871144f8c Openstack-Request-Id: req-2c6f9898-3b15-46c5-84c9-e0922963c747 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e1294280-3382-4cf4-82ee-779871144f8c", "created_at": "2026-04-12T07:46:56.205146+00:00", "updated_at": null, "name": "CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/e1294280-3382-4cf4-82ee-779871144f8c", "rel": "self"}, {"href": "http://localhost/runbooks/e1294280-3382-4cf4-82ee-779871144f8c", "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_retired_reason_hidden_in_lower_version [0.059539s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-acfbea4b-1b11-4ad1-8bb9-520a839721f3 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": "2026-04-12T07:46:56.229556+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-99632390-c499-4d9b-ac57-5d00444bac6b 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": "2026-04-12T07:46:56.229556+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.TestPost.test_create_name_invalid_too_long [0.072493s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'uuid': '2e59d61f-6bba-499e-b80d-79e80655eb4f', '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-7190bb75-a799-4ce1-bdc4-55dfc1b837fb X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid [0.118703s] ... 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-bf6a5945-6d5e-444b-aa08-3f3644232a9b 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": "2026-04-12T07:46:56.202854+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.controllers.v1.test_port.TestPatch.test_remove_mandatory_field [0.192077s] ... 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-19a1a01b-b05b-4e93-9a3a-4e87819f46e1 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_retired_with_reason [0.059898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e6e7125b-6f25-4b45-8efb-4c7a191df6db 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": "2026-04-12T07:46:56.300252+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_field_name [0.045255s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'uuid': 'c3b9b8dc-50fa-4c16-8843-875ee3963856', '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-15241692-268a-46ef-a0a0-03bdb2c80dac X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot [0.071780s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/e669db92-953f-4161-9720-47c8f80c74fe WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d4733930-04ca-454f-975c-883a60b4df2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "e669db92-953f-4161-9720-47c8f80c74fe", "created_at": "2026-04-12T07:46:56.362749+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/e669db92-953f-4161-9720-47c8f80c74fe", "rel": "self"}, {"href": "http://localhost/nodes/e669db92-953f-4161-9720-47c8f80c74fe", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e669db92-953f-4161-9720-47c8f80c74fe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e669db92-953f-4161-9720-47c8f80c74fe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e669db92-953f-4161-9720-47c8f80c74fe/states", "rel": "self"}, {"href": "http://localhost/nodes/e669db92-953f-4161-9720-47c8f80c74fe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e669db92-953f-4161-9720-47c8f80c74fe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e669db92-953f-4161-9720-47c8f80c74fe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e669db92-953f-4161-9720-47c8f80c74fe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e669db92-953f-4161-9720-47c8f80c74fe/volume", "rel": "bookmark"}]} GET /v1/nodes/351a3727-1992-426a-a821-971344efe761 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dfc1a788-00d7-4f8e-9662-747971ca4644 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.75 {"uuid": "351a3727-1992-426a-a821-971344efe761", "created_at": "2026-04-12T07:46:56.383766+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/351a3727-1992-426a-a821-971344efe761", "rel": "self"}, {"href": "http://localhost/nodes/351a3727-1992-426a-a821-971344efe761", "rel": "bookmark"}], "conductor": "fake.conductor", "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/351a3727-1992-426a-a821-971344efe761/ports", "rel": "self"}, {"href": "http://localhost/nodes/351a3727-1992-426a-a821-971344efe761/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/351a3727-1992-426a-a821-971344efe761/states", "rel": "self"}, {"href": "http://localhost/nodes/351a3727-1992-426a-a821-971344efe761/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/351a3727-1992-426a-a821-971344efe761/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/351a3727-1992-426a-a821-971344efe761/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/351a3727-1992-426a-a821-971344efe761/volume", "rel": "self"}, {"href": "http://localhost/nodes/351a3727-1992-426a-a821-971344efe761/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_chassis_uuid_invalid_api_version [0.130705s] ... 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-3e43bfbe-3e02-4981-812a-02c878ff187a 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.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_field_steps [0.097801s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '85e9386f-be62-4668-9bef-c42cbad0513c', 'disable_ramdisk': False, 'extra': {}, 'public': False, 'owner': None} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1dc8b02c-6b56-41f5-9c7f-c05c9966c509 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_secure_boot_hidden_in_lower_version [0.074342s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dd5c8461-2e85-4d07-86f8-9c49a5f51188 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": "2026-04-12T07:46:56.437777+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-23da06b0-ee2a-4852-a6cf-4d773c42ab8a 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": "2026-04-12T07:46:56.437777+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states [0.057172s] ... 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-08707548-4abb-4d11-9fdd-6d86abe11eb9 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"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_step_field_interface [0.152264s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '9d2a7e3a-6148-4fb3-975d-598818e89a1d', '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-0b016fb2-62a5-4376-8c74-971fde1dcd12 X-Openstack-Ironic-Api-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.TestPatch.test_remove_internal_field [0.208255s] ... 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-c4484c56-04a0-47fc-8284-6eb47a95cba5 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}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_multi [0.354517s] ... 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-7798cad1-1a07-40cf-8c78-a4688ebd747e 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": "2026-04-12T07:46:56.421617+00:00", "updated_at": "2026-04-12T07:46:56.603412+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-5d81ba57-7aad-4e1a-89ae-306b42096118 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": "2026-04-12T07:46:56.421617+00:00", "updated_at": "2026-04-12T07:46:56.654307+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_boot_mode [0.167939s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/d48a125f-9ab5-4df8-91e7-589979c762f3/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-55e622d2-35d1-402d-9bcd-90acf1b71a2d 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/649682dc-c691-4de5-9963-4e66122c9686/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3feb9933-2b7b-4b96-986b-48086eea0bfe 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} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_node_id [0.089775s] ... 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-821094bb-2d73-4b22-81de-7da5e6edc41c 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}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_non_existent_property_fail [0.069581s] ... 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-6cd653c1-bf00-4528-8699-6de5ae8edaca 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}"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_step_field_order [0.237176s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '5e9c47f6-5147-45b7-a5fb-f3c909a0d412', '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-5a610d41-a1c7-4756-8d16-a32091870a7c X-Openstack-Ironic-Api-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_states_boot_mode_hidden_in_lower_version [0.241355s] ... 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-71959251-8ed7-4f53-acfc-0860accc32df 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-3974ac68-b3e4-492f-8671-1fd82ccbccf7 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} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_no_mandatory_step_field_step [0.118912s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '526bc01c-257a-48b4-8110-ebadd7760872', '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-36d45d17-d8d8-4687-8745-e88f234e8106 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_mandatory_field [0.326507s] ... 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-6536e8c7-11ab-4abe-a462-7a4b9eb22ce7 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_non_existent_property_fail [0.077227s] ... 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-67325380-a76d-4347-922d-5a80a1fb28b0 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_port.TestPatch.test_remove_physical_network [0.224159s] ... 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-d64f16e3-5d00-4a35-90f3-a06796c064d6 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": "2026-04-12T07:46:56.886531+00:00", "updated_at": "2026-04-12T07:46:57.027731+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} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_by_name [0.101987s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/eggs/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-05725b84-b3a7-4b71-8822-fc43553705f0 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"} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_public_runbook_project_scope_fails [0.099547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'fef6eecd-42bf-4abd-b50a-ad27f24d049c', '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-44a4abdd-70da-4737-8d8b-a46a151c784e X-Openstack-Ironic-Api-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_runbook.TestPost.test_create_runbook_owner_project_scope_fails [0.043839s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '0568ef68-f7b7-4808-8aa7-2f826e7768ac', '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-912d89b4-e21b-4374-8d85-1a2f7df3a478 X-Openstack-Ironic-Api-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_runbook.TestPost.test_create_runbook_owner_system_scope [0.045706s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2', '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/504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2 Openstack-Request-Id: req-6b7c24c3-44ba-4328-8941-f1292f6516fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2", "created_at": "2026-04-12T07:46:57.136815+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "catsay", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2", "rel": "self"}, {"href": "http://localhost/runbooks/504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e057aad5-1600-48fd-bf1e-40aaf4abc4c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2", "created_at": "2026-04-12T07:46:57.136815+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "catsay", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2", "rel": "self"}, {"href": "http://localhost/runbooks/504dd6d9-ac09-4b60-9e6c-ae0e5254b1b2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_ok [0.107182s] ... 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-9247d129-61bf-4c5d-936f-e10a7cfffd71 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": "2026-04-12T07:46:57.089364+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_runbook.TestPost.test_create_runbook_project_scope [0.060516s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '916914da-72c1-43bd-a75e-dc938377e1a2', '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/916914da-72c1-43bd-a75e-dc938377e1a2 Openstack-Request-Id: req-9427441e-8264-476c-a901-42d7dde1cd0a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "916914da-72c1-43bd-a75e-dc938377e1a2", "created_at": "2026-04-12T07:46:57.188489+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/916914da-72c1-43bd-a75e-dc938377e1a2", "rel": "self"}, {"href": "http://localhost/runbooks/916914da-72c1-43bd-a75e-dc938377e1a2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/916914da-72c1-43bd-a75e-dc938377e1a2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2d49e213-7b92-42a7-9b0e-6907a342aa38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "916914da-72c1-43bd-a75e-dc938377e1a2", "created_at": "2026-04-12T07:46:57.188489+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "projectX", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/916914da-72c1-43bd-a75e-dc938377e1a2", "rel": "self"}, {"href": "http://localhost/runbooks/916914da-72c1-43bd-a75e-dc938377e1a2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_remove_uuid [0.059437s] ... 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-e9b029b1-c523-444d-923f-14ccc5b8c8b6 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.controllers.v1.test_port.TestPatch.test_remove_physical_network_old_api_version [0.183708s] ... 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-393244fa-efab-45ac-9e79-f260475baccf 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_field_hidden_in_lower_version [0.175115s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-63d780b6-3521-45ca-9497-b1811acd60c9 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": "2026-04-12T07:46:57.159187+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-a0c1d7f4-19c3-46a1-883e-e0b41cac41c7 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": "2026-04-12T07:46:57.159187+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_node.TestPatch.test_replace_chassis_id [0.064531s] ... 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-93b33c11-4740-4aa0-b965-dada2a10991a 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.controllers.v1.test_runbook.TestPost.test_create_runbook_system_scope [0.090237s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'a6961e28-c523-4534-b9a0-8f5f0fb27e53', '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/a6961e28-c523-4534-b9a0-8f5f0fb27e53 Openstack-Request-Id: req-3ece8ea3-1211-4f07-b4f9-6c6fde1b1835 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a6961e28-c523-4534-b9a0-8f5f0fb27e53", "created_at": "2026-04-12T07:46:57.270066+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/a6961e28-c523-4534-b9a0-8f5f0fb27e53", "rel": "self"}, {"href": "http://localhost/runbooks/a6961e28-c523-4534-b9a0-8f5f0fb27e53", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/a6961e28-c523-4534-b9a0-8f5f0fb27e53 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c116d9b2-451e-473a-8bce-49a3ef3d8857 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a6961e28-c523-4534-b9a0-8f5f0fb27e53", "created_at": "2026-04-12T07:46:57.270066+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/a6961e28-c523-4534-b9a0-8f5f0fb27e53", "rel": "self"}, {"href": "http://localhost/runbooks/a6961e28-c523-4534-b9a0-8f5f0fb27e53", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.api.controllers.v1.test_runbook.TestPost.test_create_standard_trait_name [0.053131s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'HW_CPU_X86_VMX', 'uuid': '0fa2efdf-eb12-4f9c-99b3-ddeedee4135a', '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/0fa2efdf-eb12-4f9c-99b3-ddeedee4135a Openstack-Request-Id: req-7e8982b9-1c32-450e-a485-8f174a2c6556 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0fa2efdf-eb12-4f9c-99b3-ddeedee4135a", "created_at": "2026-04-12T07:46:57.348246+00:00", "updated_at": null, "name": "HW_CPU_X86_VMX", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/0fa2efdf-eb12-4f9c-99b3-ddeedee4135a", "rel": "self"}, {"href": "http://localhost/runbooks/0fa2efdf-eb12-4f9c-99b3-ddeedee4135a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_remove_physical_network_upgrade [0.116918s] ... 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-1e0afdcb-9008-470a-a2d7-6b4758c5de10 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_node.TestListNodes.test_node_states_raid [0.112816s] ... 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-e3fb1cdb-3680-4011-a0c8-4599f2bc0bef 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.TestPost.test_create_step_string_order [0.068871s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': 'c507325c-dab9-442a-8f00-d329da67bdb1', '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/c507325c-dab9-442a-8f00-d329da67bdb1 Openstack-Request-Id: req-8138f249-b879-45bc-8f2e-16f4a84fa913 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c507325c-dab9-442a-8f00-d329da67bdb1", "created_at": "2026-04-12T07:46:57.408683+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/c507325c-dab9-442a-8f00-d329da67bdb1", "rel": "self"}, {"href": "http://localhost/runbooks/c507325c-dab9-442a-8f00-d329da67bdb1", "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_states_secure_boot [0.070197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/420d9e05-3af5-4e71-ae85-61d1e892bd5c/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-25af17bd-c530-42f9-aa34-b3222b5312c6 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/4e67572d-b617-434b-a71a-d1df9d0d30af/states WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aea24878-b65f-4f28-97e4-c5388d7c0d82 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_port.TestPatch.test_remove_uuid [0.081241s] ... 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-34f1fb28-b694-4070-9f5f-22c044619a96 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_chassis_uuid [0.168369s] ... 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-42d98de1-6519-45a3-8d5f-8c2fdfb078f1 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": "2026-04-12T07:46:57.327151+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_runbook.TestPost.test_create_steps_invalid_duplicate [0.053415s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/runbooks WITH {'name': 'CUSTOM_DT1', 'uuid': '56c48870-e8fd-44b6-b891-c2bbfccedf62', '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-f8cd99e2-0850-4b78-9e28-79c487ae31fc X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_states_secure_boot_hidden_in_lower_version [0.060437s] ... 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-83d1e4ef-8018-4203-8fa8-4ed9230c89be 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-101bf929-a68e-42fe-9b9e-c58faa33e702 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} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_alloc_policy_and_retrieve_no_alloc_policy_not_found [0.021001s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_consoled_enabled [0.061711s] ... 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-38dc6235-c819-4e04-a7fa-1346919b9140 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.controllers.v1.test_port.TestPatch.test_replace_address_already_exist [0.086258s] ... 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-e5ccb117-388c-4e45-b699-b1f7dcbe3c64 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_storage_interface_hidden_in_lower_version [0.077450s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4626bc6d-b07c-4b0e-b049-7413f65a4ed0 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": "2026-04-12T07:46:57.520598+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-e12ecdce-b07a-4ea6-8389-9a62d6c96a73 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": "2026-04-12T07:46:57.520598+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_node.TestPatch.test_replace_internal_field [0.077085s] ... 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-5ac62d2f-1c8a-4ce9-91bf-d65aa40d0c60 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_node_traits_hidden_in_lower_version [0.060748s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a3f1fc3-bddc-4874-ab57-d76a86dbffe3 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": "2026-04-12T07:46:57.605546+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-d293d30c-e050-4f60-bd1f-3dd6c7889c1f 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": "2026-04-12T07:46:57.605546+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_local_link_connection [0.105012s] ... 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-926629e4-246b-4a54-8f53-1981acc01970 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": "2026-04-12T07:46:57.592076+00:00", "updated_at": "2026-04-12T07:46:57.634772+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_one [0.059270s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-417112a0-e1a6-49c0-bd82-9e9265b85fc9 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.TestPatch.test_replace_maintenance [0.143754s] ... 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-63102fac-c16d-4663-bbe4-5e812a22c486 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": "2026-04-12T07:46:57.637643+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.controllers.v1.test_port.TestPatch.test_replace_multi [0.120640s] ... 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-2ac6d4e1-4b3b-4e18-aa65-cf21d37ceb22 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": "2026-04-12T07:46:57.696441+00:00", "updated_at": "2026-04-12T07:46:57.755556+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_one_field_specific_santization [0.104896s] ... 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-0c777c42-0276-49a6-a8d0-b013b80b4259 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_port.TestPatch.test_replace_node_id [0.063859s] ... 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-e0f331fc-f022-497e-a526-c5bfa57af065 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.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_no_allocation [0.328903s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_maintenance_by_name [0.110663s] ... 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-ab565a0d-736f-46c0-88d0-608834bbeda0 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": "2026-04-12T07:46:57.757937+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.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_allocation_policy_and_retrieve_policy_not_found [0.045485s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllocationPolicyAndRetrieve.test_check_node_policy_and_retrieve [0.037342s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_node_uuid [0.099587s] ... 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-f868051b-1afa-466c-91c3-3b5cdac0a151 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": "2026-04-12T07:46:57.876831+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.TestPatch.test_replace_non_existent_chassis_uuid [0.093720s] ... 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-32f4ae9a-64f4-44aa-88a9-e8c78db96920 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.controllers.v1.test_utils.TestCheckAllowFields.test_allow_agent_token [0.036118s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource [0.179680s] ... 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-24917d92-78b5-43d2-9702-7a555f3c7b0f 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": "4efb4770-63bf-46b1-b72b-45af46149d18", "address": "52:54:00:cf:2d:30", "name": "pg-0", "links": [{"href": "http://localhost/v1/portgroups/4efb4770-63bf-46b1-b72b-45af46149d18", "rel": "self"}, {"href": "http://localhost/portgroups/4efb4770-63bf-46b1-b72b-45af46149d18", "rel": "bookmark"}]}, {"uuid": "43918972-b9c6-41cd-8c8f-2f97615d652c", "address": "52:54:00:cf:2d:31", "name": "pg-1", "links": [{"href": "http://localhost/v1/portgroups/43918972-b9c6-41cd-8c8f-2f97615d652c", "rel": "self"}, {"href": "http://localhost/portgroups/43918972-b9c6-41cd-8c8f-2f97615d652c", "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-04f175e5-10ba-4249-b3a3-2731f822fc6c 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": "4efb4770-63bf-46b1-b72b-45af46149d18", "address": "52:54:00:cf:2d:30", "name": "pg-0", "links": [{"href": "http://localhost/v1/portgroups/4efb4770-63bf-46b1-b72b-45af46149d18", "rel": "self"}, {"href": "http://localhost/portgroups/4efb4770-63bf-46b1-b72b-45af46149d18", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=1&marker=4efb4770-63bf-46b1-b72b-45af46149d18"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_configdrive_vendor_data [0.039958s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_link [0.046864s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0adcfb3e-5433-43a9-8cc8-07e35261d926 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": "2026-04-12T07:46:58.006358+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_steps [0.046341s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_non_existent_node_uuid [0.107160s] ... 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-cad2e06e-1e65-419f-be5f-eee3d226aef2 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_replace_provision_updated_at [0.094090s] ... 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-38db459e-caeb-4b77-9547-1b0c58a7ab02 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.controllers.v1.test_utils.TestCheckAllowFields.test_allow_deploy_templates [0.028325s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_dynamic_drivers [0.029675s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_link_hidden_for_older_versions [0.087380s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7963c072-43f7-4234-a784-047afa3e955a 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": "2026-04-12T07:46:58.071014+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_utils.TestCheckAllowFields.test_allow_inject_nmi [0.054272s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_inspect_abort [0.019154s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_portgroups_subresource_old_api_version [0.048333s] ... 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\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_links_node_states_and_driver_properties [0.031223s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_node_rebuild_with_configdrive [0.027792s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_advanced_net_fields [0.037863s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_internal_info [0.037159s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_is_smartnic [0.022813s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_no_pin [0.031769s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_port_physical_network_pin [0.056301s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroup_mode_properties [0.028752s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource [0.284066s] ... 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-0c5f775b-39b8-46ab-afd9-d2bbbffa868e 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": "8e92662e-0210-486a-b337-358e2afeea74", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/8e92662e-0210-486a-b337-358e2afeea74", "rel": "self"}, {"href": "http://localhost/ports/8e92662e-0210-486a-b337-358e2afeea74", "rel": "bookmark"}]}, {"uuid": "b31c1b39-b6d5-4681-8d16-e670ca68d373", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/b31c1b39-b6d5-4681-8d16-e670ca68d373", "rel": "self"}, {"href": "http://localhost/ports/b31c1b39-b6d5-4681-8d16-e670ca68d373", "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-3d14c218-4469-4a6f-b169-667bec29a2d8 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": "8e92662e-0210-486a-b337-358e2afeea74", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/8e92662e-0210-486a-b337-358e2afeea74", "rel": "self"}, {"href": "http://localhost/ports/8e92662e-0210-486a-b337-358e2afeea74", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=1&marker=8e92662e-0210-486a-b337-358e2afeea74"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_portgroups [0.037405s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_invalid_ident [0.043953s] ... 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_utils.TestCheckAllowFields.test_allow_portgroups_subcontrollers [0.022912s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network [0.469714s] ... 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-8add039f-0988-416c-aabf-2b199c900e97 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": "2026-04-12T07:46:58.413454+00:00", "updated_at": "2026-04-12T07:46:58.498921+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} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_ramdisk_endpoints [0.021803s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interface_fields [0.488633s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/20af3532-e941-4897-a270-9f41b967feab WITH [{'path': '/boot_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d22c787b-7191-416a-afd6-f9be992ac066 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20af3532-e941-4897-a270-9f41b967feab", "created_at": "2026-04-12T07:46:58.081933+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/20af3532-e941-4897-a270-9f41b967feab", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "bookmark"}]} PATCH /v1/nodes/20af3532-e941-4897-a270-9f41b967feab WITH [{'path': '/console_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-85e74a28-ba9a-4b68-8518-3a357b30fb13 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20af3532-e941-4897-a270-9f41b967feab", "created_at": "2026-04-12T07:46:58.081933+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/20af3532-e941-4897-a270-9f41b967feab", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "bookmark"}]} PATCH /v1/nodes/20af3532-e941-4897-a270-9f41b967feab WITH [{'path': '/deploy_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c6accba1-f23c-4353-af3a-1cfbab79f53f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20af3532-e941-4897-a270-9f41b967feab", "created_at": "2026-04-12T07:46:58.081933+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/20af3532-e941-4897-a270-9f41b967feab", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab", "rel": "bookmark"}], "conductor": null, "alloca tion_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "bookmark"}]} PATCH /v1/nodes/20af3532-e941-4897-a270-9f41b967feab WITH [{'path': '/inspect_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3d9fa7b3-1028-45ed-bd64-dba1d8bf6015 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20af3532-e941-4897-a270-9f41b967feab", "created_at": "2026-04-12T07:46:58.081933+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/20af3532-e941-4897-a270-9f41b967feab", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "bookmark"}]} PATCH /v1/nodes/20af3532-e941-4897-a270-9f41b967feab WITH [{'path': '/management_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b90f46fd-3502-4f17-bdb2-1cc2347615b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20af3532-e941-4897-a270-9f41b967feab", "created_at": "2026-04-12T07:46:58.081933+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/20af3532-e941-4897-a270-9f41b967feab", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "bookmark"}]} PATCH /v1/nodes/20af3532-e941-4897-a270-9f41b967feab WITH [{'path': '/power_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3afc05f6-6d45-4421-8427-a6e865bc8da2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20af3532-e941-4897-a270-9f41b967feab", "created_at": "2026-04-12T07:46:58.081933+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/20af3532-e941-4897-a270-9f41b967feab", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "bookmark"}]} PATCH /v1/nodes/20af3532-e941-4897-a270-9f41b967feab WITH [{'path': '/raid_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fdbcce5a-5dbd-4d29-b069-17ce34cb32ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20af3532-e941-4897-a270-9f41b967feab", "created_at": "2026-04-12T07:46:58.081933+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/20af3532-e941-4897-a270-9f41b967feab", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "self"}, {"href": "http://localhost/nodes/20 af3532-e941-4897-a270-9f41b967feab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "bookmark"}]} PATCH /v1/nodes/20af3532-e941-4897-a270-9f41b967feab WITH [{'path': '/vendor_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-465ddda5-acf6-45a8-8890-28662b42e60e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20af3532-e941-4897-a270-9f41b967feab", "created_at": "2026-04-12T07:46:58.081933+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/20af3532-e941-4897-a270-9f41b967feab", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "self"}, {"href": "http://localhost/nodes/20af3532-e941-4897-a270-9f41b967feab/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_remove_chassis_uuid [0.032491s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_old_api_version [0.056504s] ... 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-f8ae23fb-8cd8-4d45-950a-8e935be11767 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_link [0.067729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a3b775bf-a774-4e28-a525-8582b44e0736 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": "2026-04-12T07:46:58.534076+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_utils.TestCheckAllowFields.test_allow_rescue_interface [0.038002s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_not_supported [0.082941s] ... 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-cc56b260-33af-49b0-8563-808b72994676 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_ports_subresource_node_not_found [0.059478s] ... 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-a025cdc1-dd59-4db5-8d63-21b156626cec 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}"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_storage_interface [0.044711s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_physical_network_upgrade [0.098499s] ... 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-3ff8af51-cfd9-47e5-b8bb-b1e5b8596970 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_node.TestListNodes.test_ports_subresource_noid [0.052005s] ... 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\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_allow_traits [0.059227s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_interfaces_without_driver [0.127122s] ... 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-bd8d422d-b588-49ed-aa9b-41958593a761 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_ports_subresource_via_portgroups_subres_not_allowed [0.052253s] ... 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-8f5c1660-fe86-484d-b906-c4c6c4b70e52 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_utils.TestCheckAllowFields.test_allow_volume [0.045377s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs [0.029246s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_abort_verbs_fail [0.025536s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key [0.074976s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-98fcee0c-b324-47ee-a675-8365820be437 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": "0d336194-8048-4956-a622-4507b9f4d7f0", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/0d336194-8048-4956-a622-4507b9f4d7f0", "rel": "self"}, {"href": "http://localhost/nodes/0d336194-8048-4956-a622-4507b9f4d7f0", "rel": "bookmark"}]}, {"uuid": "45003bdc-4790-4525-9e15-1ea4f05ae7b1", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/45003bdc-4790-4525-9e15-1ea4f05ae7b1", "rel": "self"}, {"href": "http://localhost/nodes/45003bdc-4790-4525-9e15-1ea4f05ae7b1", "rel": "bookmark"}]}, {"uuid": "a8397f44-c427-4e32-aa06-e1f954512285", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/a8397f44-c427-4e32-aa06-e1f954512285", "rel": "self"}, {"href": "http://localhost/nodes/a8397f44-c427-4e32-aa06-e1f954512285", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs [0.045247s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_adopt_verbs_fail [0.023089s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_allowed [0.061260s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sort_key=resource_class WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-05f0bf42-d43e-452e-a53c-d94a19d38852 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": "a1cef65f-60e6-4365-b176-7b3ace0764ea", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/a1cef65f-60e6-4365-b176-7b3ace0764ea", "rel": "self"}, {"href": "http://localhost/nodes/a1cef65f-60e6-4365-b176-7b3ace0764ea", "rel": "bookmark"}]}, {"uuid": "3d61d3b2-7ada-409a-abd2-f5a4864ad70c", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/3d61d3b2-7ada-409a-abd2-f5a4864ad70c", "rel": "self"}, {"href": "http://localhost/nodes/3d61d3b2-7ada-409a-abd2-f5a4864ad70c", "rel": "bookmark"}]}, {"uuid": "849db87f-84a8-4395-801b-d4e0dca7c866", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/849db87f-84a8-4395-801b-d4e0dca7c866", "rel": "self"}, {"href": "http://localhost/nodes/849db87f-84a8-4395-801b-d4e0dca7c866", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid [0.240438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': 'd1bacdc8-96b3-4b47-905e-830b517cc011', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4e9914e9-8932-4c6d-9578-27729cdff490 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": "2026-04-12T07:46:58.757790+00:00", "updated_at": "2026-04-12T07:46:58.879648+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": "d1bacdc8-96b3-4b47-905e-830b517cc011"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs [0.030942s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_clean_verbs_fail [0.032295s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_invalid [0.090906s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-14bf689d-5626-4f79-ad55-b3369d5d997b X-Openstack-Ironic-Api-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-732a73e3-8b52-4cbb-9c0f-d1e45a58da14 X-Openstack-Ironic-Api-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-727c2a5a-ae66-4f94-95ed-a50bc30d466a X-Openstack-Ironic-Api-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-503a62e4-223f-4d43-9fcb-06fd7296c86c X-Openstack-Ironic-Api-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-93cd7a66-f39b-4770-876a-673117f6873f X-Openstack-Ironic-Api-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-16514007-5762-4e00-a2d4-5caf10cd2bcb X-Openstack-Ironic-Api-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-dd286623-d302-4ed0-a093-a1531671dffe X-Openstack-Ironic-Api-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-8944d13b-6a70-4de3-ace4-95bfda39dd01 X-Openstack-Ironic-Api-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_node.TestPatch.test_reset_network_interface [0.239506s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c WITH [{'path': '/network_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2a734c2a-3c94-4d75-95f9-3137542e82f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c", "created_at": "2026-04-12T07:46:58.851112+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/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c", "rel": "self"}, {"href": "http://localhost/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c/ports", "rel": "self"}, {"href": "http://localhost/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c/states", "rel": "self"}, {"href": "http://localhost/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c/volume", "rel": "self"}, {"href": "http://localhost/nodes/d37a8073-5a8c-4c3c-bcfb-62de5cbecc3c/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive [0.068821s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_old_api [0.127613s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': '7fdfbddd-d3a2-43db-9de9-8053f7974c0e', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-f5011ed3-ab51-4a29-bab8-3bdcfd7293c1 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_sort_key_not_allowed [0.076090s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sort_key=resource_class WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-8b85e87f-76a8-4395-a0ab-074f3d9be9bc 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_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict [0.092620s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_insensitive [0.083442s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=false WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8f348ed9-8094-4fe4-a068-e16a8e79a796 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": "12e6c40f-bce3-4991-a233-e0f9e14dd96b", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/12e6c40f-bce3-4991-a233-e0f9e14dd96b", "rel": "self"}, {"href": "http://localhost/nodes/12e6c40f-bce3-4991-a233-e0f9e14dd96b", "rel": "bookmark"}]}, {"uuid": "0edb7b9d-8431-4fcb-a4d2-4324a965b4f5", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/0edb7b9d-8431-4fcb-a4d2-4324a965b4f5", "rel": "self"}, {"href": "http://localhost/nodes/0edb7b9d-8431-4fcb-a4d2-4324a965b4f5", "rel": "bookmark"}]}, {"uuid": "f7fa91db-1b58-402b-b6db-7eb04fb249ad", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f7fa91db-1b58-402b-b6db-7eb04fb249ad", "rel": "self"}, {"href": "http://localhost/nodes/f7fa91db-1b58-402b-b6db-7eb04fb249ad", "rel": "bookmark"}]}]} GET /v1/nodes?associated=FALSE WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-63da7eb9-96f0-4354-9a13-63c7aa64d4ce 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": "12e6c40f-bce3-4991-a233-e0f9e14dd96b", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/12e6c40f-bce3-4991-a233-e0f9e14dd96b", "rel": "self"}, {"href": "http://localhost/nodes/12e6c40f-bce3-4991-a233-e0f9e14dd96b", "rel": "bookmark"}]}, {"uuid": "0edb7b9d-8431-4fcb-a4d2-4324a965b4f5", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/0edb7b9d-8431-4fcb-a4d2-4324a965b4f5", "rel": "self"}, {"href": "http://localhost/nodes/0edb7b9d-8431-4fcb-a4d2-4324a965b4f5", "rel": "bookmark"}]}, {"uuid": "f7fa91db-1b58-402b-b6db-7eb04fb249ad", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/f7fa91db-1b58-402b-b6db-7eb04fb249ad", "rel": "self"}, {"href": "http://localhost/nodes/f7fa91db-1b58-402b-b6db-7eb04fb249ad", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_as_dict_invalid [0.076931s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_fails [0.046281s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove [0.209963s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': '7a5ed491-fce6-48d4-a5cb-820e6f8229e8', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c113b108-cb0a-43b2-bd69-63ffcba4bba2 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": "2026-04-12T07:46:59.094892+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.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_configdrive_vendor_data_failed [0.027324s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_reset_storage_interface [0.292372s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/18f340e9-8333-4532-a43f-989c9453ef8a WITH [{'path': '/storage_interface', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c159eb29-8433-4184-9c02-cb2f2217a16b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "18f340e9-8333-4532-a43f-989c9453ef8a", "created_at": "2026-04-12T07:46:59.097510+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/18f340e9-8333-4532-a43f-989c9453ef8a", "rel": "self"}, {"href": "http://localhost/nodes/18f340e9-8333-4532-a43f-989c9453ef8a", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/18f340e9-8333-4532-a43f-989c9453ef8a/ports", "rel": "self"}, {"href": "http://localhost/nodes/18f340e9-8333-4532-a43f-989c9453ef8a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/18f340e9-8333-4532-a43f-989c9453ef8a/states", "rel": "self"}, {"href": "http://localhost/nodes/18f340e9-8333-4532-a43f-989c9453ef8a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/18f340e9-8333-4532-a43f-989c9453ef8a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/18f340e9-8333-4532-a43f-989c9453ef8a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/18f340e9-8333-4532-a43f-989c9453ef8a/volume", "rel": "self"}, {"href": "http://localhost/nodes/18f340e9-8333-4532-a43f-989c9453ef8a/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps [0.020951s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_empty [0.019118s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_target_unsupported [0.029669s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_steps_version_older [0.035004s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs [0.021639s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_deploy_verbs_fail [0.020681s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_portgroup_uuid_remove_add [0.173997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH [{'path': '/portgroup_uuid', 'value': 'da31c7cb-311f-458e-8715-e08f73a03984', 'op': 'remove'}, {'path': '/portgroup_uuid', 'value': '37bc22ca-683b-4117-b69b-f151d9b959d3', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3c408e27-2fd4-4af2-92cc-32bcba62490d 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": "2026-04-12T07:46:59.329142+00:00", "updated_at": "2026-04-12T07:46:59.408872+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": "37bc22ca-683b-4117-b69b-f151d9b959d3"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail [0.033742s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_fail [0.029367s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_false [0.042124s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_unassociated_nodes_with_limit [0.414351s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?associated=False&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3f8a0b25-e68a-4705-9400-0408f54e3f60 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": "eea7828b-9aa1-4955-9594-9708f950043e", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/eea7828b-9aa1-4955-9594-9708f950043e", "rel": "self"}, {"href": "http://localhost/nodes/eea7828b-9aa1-4955-9594-9708f950043e", "rel": "bookmark"}]}, {"uuid": "4a047581-0db0-44eb-9f02-61a25a7af4fb", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": null, "links": [{"href": "http://localhost/v1/nodes/4a047581-0db0-44eb-9f02-61a25a7af4fb", "rel": "self"}, {"href": "http://localhost/nodes/4a047581-0db0-44eb-9f02-61a25a7af4fb", "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=4a047581-0db0-44eb-9f02-61a25a7af4fb"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_replace_singular [0.115810s] ... 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-00645b96-2886-4dcc-9d49-c4b1a57b182c 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": "2026-04-12T07:46:59.474882+00:00", "updated_at": "2026-04-12T07:46:59.530458+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.controllers.v1.test_node.TestPatch.test_update_allowed_in_maintenance [0.291164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/08bba27d-8c86-4f93-ad39-79226fc37557 WITH [{'path': '/instance_uuid', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6cdf74ff-9f8b-4c0e-b31d-ac17ef71f4ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "08bba27d-8c86-4f93-ad39-79226fc37557", "created_at": "2026-04-12T07:46:59.414010+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/08bba27d-8c86-4f93-ad39-79226fc37557", "rel": "self"}, {"href": "http://localhost/nodes/08bba27d-8c86-4f93-ad39-79226fc37557", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/08bba27d-8c86-4f93-ad39-79226fc37557/ports", "rel": "self"}, {"href": "http://localhost/nodes/08bba27d-8c86-4f93-ad39-79226fc37557/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_driver_detail_none [0.056370s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_set_pxe_enabled_false_old_api [0.067356s] ... 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-4cccf4ee-d74f-48e8-a1dd-60c63ed8985e 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_validate_by_name [0.073150s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/validate?node=spam WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fd6e6744-786f-4c76-a3d3-4808810b2ba6 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_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group [0.063519s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_fail [0.027920s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_name_unsupported [0.052020s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/validate?node=spam WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-d15c29af-efb7-4db7-9d78-0ebea9b60cdc 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_utils.TestCheckAllowFields.test_check_allow_filter_by_conductor_group_none [0.030099s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_uuid [0.048474s] ... 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-824465f3-ba32-4f34-b72f-9739d8b9d051 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_utils.TestCheckAllowFields.test_check_allow_filter_driver_type [0.035364s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_allowed_in_power_transition [0.165266s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/0384b1ec-0d20-45e6-aaf3-c96b3142a099 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d71a3b66-eb6e-4319-8eb8-2521f0f01e92 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "0384b1ec-0d20-45e6-aaf3-c96b3142a099", "created_at": "2026-04-12T07:46:59.671764+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/0384b1ec-0d20-45e6-aaf3-c96b3142a099", "rel": "self"}, {"href": "http://localhost/nodes/0384b1ec-0d20-45e6-aaf3-c96b3142a099", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/0384b1ec-0d20-45e6-aaf3-c96b3142a099/ports", "rel": "self"}, {"href": "http://localhost/nodes/0384b1ec-0d20-45e6-aaf3-c96b3142a099/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_address_invalid_format [0.109533s] ... 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-8f48348c-9158-44c4-9bc0-91b955713b32 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.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_fail [0.022398s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_filter_driver_type_none [0.035380s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs [0.025570s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_by_uuid_using_deprecated_interface [0.102748s] ... 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-057ecf39-12c0-472f-ba1e-6ebfa1edff04 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_port.TestPatch.test_update_byaddress_not_allowed [0.097522s] ... 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-e7d46e52-e729-46ee-b7f6-05e40b595da2 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.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_inspect_verbs_fail [0.026248s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs [0.020614s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_manage_verbs_fail [0.021054s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_validate_invalid_uuid_or_name [0.056467s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1234~1234~1234 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e4cde1d1-3c1f-441a-8236-9b0644f11155 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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_automated_clean [0.186234s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9 WITH [{'path': '/automated_clean', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-12710573-0bb1-4485-bdc6-14e8d5abc0e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.47 {"uuid": "ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9", "created_at": "2026-04-12T07:46:59.819687+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/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9", "rel": "self"}, {"href": "http://localhost/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9/ports", "rel": "self"}, {"href": "http://localhost/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9/states", "rel": "self"}, {"href": "http://localhost/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9/volume", "rel": "self"}, {"href": "http://localhost/nodes/ad9dd112-22ef-48f5-bcb1-cf454f7d0ff9/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs [0.062413s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_byid [0.134128s] ... 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-7e087390-2543-42b6-bc72-217807dfd744 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": "2026-04-12T07:46:59.885407+00:00", "updated_at": "2026-04-12T07:46:59.959019+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource [0.094560s] ... 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-23b735b9-5cad-4ec9-ae59-ad62c2121b49 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": "8358eafd-6e1f-4c1d-b22c-4f68c49765fb", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/8358eafd-6e1f-4c1d-b22c-4f68c49765fb", "rel": "self"}, {"href": "http://localhost/volume/connectors/8358eafd-6e1f-4c1d-b22c-4f68c49765fb", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "90d4aec7-f5d8-4de7-90ad-2aed5340c880", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/90d4aec7-f5d8-4de7-90ad-2aed5340c880", "rel": "self"}, {"href": "http://localhost/volume/connectors/90d4aec7-f5d8-4de7-90ad-2aed5340c880", "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-3ba27aef-4e07-4e48-a8c6-5315d0ab5675 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": "8358eafd-6e1f-4c1d-b22c-4f68c49765fb", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/8358eafd-6e1f-4c1d-b22c-4f68c49765fb", "rel": "self"}, {"href": "http://localhost/volume/connectors/8358eafd-6e1f-4c1d-b22c-4f68c49765fb", "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=8358eafd-6e1f-4c1d-b22c-4f68c49765fb"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_provide_verbs_fail [0.044567s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver [0.037713s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource_node_not_found [0.051426s] ... 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-e3ecce1e-78fb-499e-b593-0ea12c1a3dd1 X-Openstack-Ironic-Api-Maximum-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_node.TestPatch.test_update_automated_clean_old_api [0.118334s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/695fee58-8b37-481b-afe5-cd62be0c6865 WITH [{'path': '/automated_clean', 'value': True, 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-9af6d382-4625-4d70-b776-700f49f032ab 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.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_driver_fail [0.028087s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields [0.023498s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_connectors_subresource_noid [0.053936s] ... 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\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_fields_fail [0.023706s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource [0.042307s] ... 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-6f279052-16e0-443a-993f-bd8ce0536301 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_utils.TestCheckAllowFields.test_check_allow_specify_resource_class [0.039724s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_in_inspecting_allowed [0.196782s] ... 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-7ce47347-50eb-4ebe-9643-28fdc8b68366 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": "2026-04-12T07:47:00.029852+00:00", "updated_at": "2026-04-12T07:47:00.156465+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} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_specify_resource_class_fail [0.022506s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource_invalid_api_version [0.041508s] ... 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-c7a2988f-d91d-43c3-b7c3-c1583c17a7ed 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_node.TestPatch.test_update_automated_clean_with_false [0.136590s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5bd70781-988c-4857-9882-6587df59b829 WITH [{'path': '/automated_clean', 'value': False, 'op': 'replace'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c3850893-018c-4513-8935-27b552ca9415 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}"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs [0.020969s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allow_undeploy_verbs_fail [0.032554s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_subresource_link [0.064213s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9cc5b135-c300-4a7b-8523-b3f20c4288fe 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": "2026-04-12T07:47:00.209663+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_utils.TestCheckAllowFields.test_check_allow_unknown_verbs [0.025918s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface [0.039677s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_network_interface_fail [0.018754s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_by_name_unsupported [0.132194s] ... 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-c652bc14-1177-496f-b1a6-c25697219bf1 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.controllers.v1.test_port.TestPatch.test_update_in_inspecting_not_allowed [0.170191s] ... 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-25517be9-5555-4240-a22e-a29d25400407 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}"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_rescue_interface_fail [0.034287s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource [0.110699s] ... 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-7a435065-3475-4df3-a195-12fe48cde22b 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": "9426a126-3192-4938-8644-3595a358782a", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9426a126-3192-4938-8644-3595a358782a", "rel": "self"}, {"href": "http://localhost/volume/targets/9426a126-3192-4938-8644-3595a358782a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "41c08762-9134-46d7-b4a1-4ed467f67068", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/41c08762-9134-46d7-b4a1-4ed467f67068", "rel": "self"}, {"href": "http://localhost/volume/targets/41c08762-9134-46d7-b4a1-4ed467f67068", "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-be64efb7-008d-4183-87e4-a01ade9eda9e 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": "9426a126-3192-4938-8644-3595a358782a", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9426a126-3192-4938-8644-3595a358782a", "rel": "self"}, {"href": "http://localhost/volume/targets/9426a126-3192-4938-8644-3595a358782a", "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=9426a126-3192-4938-8644-3595a358782a"} {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class [0.021571s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_node_not_found [0.065723s] ... 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-3ab92072-f342-44ba-99ac-9c7a0a22777d X-Openstack-Ironic-Api-Maximum-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}"} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_not_found [0.098318s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/574df071-ff49-4b67-b8ae-d0ad2ce91ca0 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0723d6d2-45e2-42b6-9b2e-7a7f6b25d578 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 574df071-ff49-4b67-b8ae-d0ad2ce91ca0 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestListNodes.test_volume_targets_subresource_noid [0.034329s] ... 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\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group [0.198665s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/56ecb727-4d44-4248-846c-843a3d46389b WITH [{'path': '/conductor_group', 'value': 'foogroup', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2859409c-6e9d-4a9e-ae84-27a4593f74f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.46 {"uuid": "56ecb727-4d44-4248-846c-843a3d46389b", "created_at": "2026-04-12T07:47:00.378329+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/56ecb727-4d44-4248-846c-843a3d46389b", "rel": "self"}, {"href": "http://localhost/nodes/56ecb727-4d44-4248-846c-843a3d46389b", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/56ecb727-4d44-4248-846c-843a3d46389b/ports", "rel": "self"}, {"href": "http://localhost/nodes/56ecb727-4d44-4248-846c-843a3d46389b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/56ecb727-4d44-4248-846c-843a3d46389b/states", "rel": "self"}, {"href": "http://localhost/nodes/56ecb727-4d44-4248-846c-843a3d46389b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/56ecb727-4d44-4248-846c-843a3d46389b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/56ecb727-4d44-4248-846c-843a3d46389b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/56ecb727-4d44-4248-846c-843a3d46389b/volume", "rel": "self"}, {"href": "http://localhost/nodes/56ecb727-4d44-4248-846c-843a3d46389b/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history [0.079011s] ... 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-036d0f27-a49d-40a2-b844-b1bfd79bbaa5 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_node.TestNodeHistory.test_get_all_history_returns_detail [0.070177s] ... 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-7b623db1-03e0-40bf-8d9a-6e8535b6e0b8 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": "6c4d253f-eeb7-43ce-8d7b-2eb8f2abced9", "created_at": "2026-04-12T07:47:00.579901+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/6c4d253f-eeb7-43ce-8d7b-2eb8f2abced9", "rel": "self"}]}, {"uuid": "ff90fd54-a4b9-4b42-b2cd-3a07de421f86", "created_at": "2026-04-12T07:47:00.580911+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/ff90fd54-a4b9-4b42-b2cd-3a07de421f86", "rel": "self"}]}, {"uuid": "85d4ce57-a0dd-4820-8fdc-1a0e825803de", "created_at": "2026-04-12T07:47:00.581822+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/85d4ce57-a0dd-4820-8fdc-1a0e825803de", "rel": "self"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_port_address_normalized [0.191515s] ... 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-2878679c-c6d1-401a-8458-c33709338d6e 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": "2026-04-12T07:47:00.504534+00:00", "updated_at": "2026-04-12T07:47:00.617923+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.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_fields_resource_class_fail [0.269231s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties [0.023007s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_history_returns_entries [0.054308s] ... 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-43803cfa-f0f5-4e3c-af39-b10046b1291e 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": "56c644d7-edc2-46a7-8d48-195ff8fe0fc2", "created_at": "2026-04-12T07:47:00.639303+00:00", "severity": null, "event": "meow", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/56c644d7-edc2-46a7-8d48-195ff8fe0fc2", "rel": "self"}]}, {"uuid": "c14dd758-0b04-4462-998f-c1d4f2cb870f", "created_at": "2026-04-12T07:47:00.640196+00:00", "severity": null, "event": "purr", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c14dd758-0b04-4462-998f-c1d4f2cb870f", "rel": "self"}]}, {"uuid": "4fea55ee-7996-436b-a497-f1792db6c131", "created_at": "2026-04-12T07:47:00.640989+00:00", "severity": null, "event": "grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4fea55ee-7996-436b-a497-f1792db6c131", "rel": "self"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_conductor_group_old_api [0.150674s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/b56cb3a6-9c37-4b85-8194-73900a8fb99a WITH [{'path': '/conductor_group', 'value': 'foogroup', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-470957df-72e0-4a9d-a766-a5b2ff4cccbe 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.controllers.v1.test_utils.TestCheckAllowFields.test_check_allowed_portgroup_fields_mode_properties_fail [0.039194s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_old_version [0.050436s] ... 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_versions.TestMaxVersionString.test_max_version_not_pinned [0.025125s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_not_pinned_in_release_mappings [0.028977s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_versions.TestMaxVersionString.test_max_version_pinned [0.023291s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_allowed [0.160705s] ... 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-7979af87-aecf-42b3-b3b5-6007c5832614 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": "2026-04-12T07:47:00.697030+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_all_pagination [0.088502s] ... 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-1e24793e-da31-4b1b-addf-8916a068dce5 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": "ecf7ba92-e594-489d-b704-ad2747543f2c", "created_at": "2026-04-12T07:47:00.749769+00:00", "severity": null, "event": "meow", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/ecf7ba92-e594-489d-b704-ad2747543f2c", "rel": "self"}]}], "next": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=None&fields=uuid,created_at,severity,event&limit=1&marker=ecf7ba92-e594-489d-b704-ad2747543f2c"} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1&marker=ecf7ba92-e594-489d-b704-ad2747543f2c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4837eb8a-2555-41cd-b66a-0fc7e6d97904 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": "3201b0e7-3783-4d7c-93ae-9e06016cd94b", "created_at": "2026-04-12T07:47:00.751150+00:00", "severity": null, "event": "purr", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/3201b0e7-3783-4d7c-93ae-9e06016cd94b", "rel": "self"}]}], "next": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=NodeHistory(conductor='cat-tree1',created_at=2026-04-12T07:47:00Z,event='meow',event_type=None,id=1,node_id=1,severity=None,updated_at=None,user='peaches',uuid=ecf7ba92-e594-489d-b704-ad2747543f2c)&fields=uuid,created_at,severity,event&limit=1&marker=3201b0e7-3783-4d7c-93ae-9e06016cd94b"} GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?limit=1&marker=3201b0e7-3783-4d7c-93ae-9e06016cd94b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-854042e4-93e2-48a1-8aab-4f02642a8cf6 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": "9afd7ea8-9364-4bb1-addb-d45380440029", "created_at": "2026-04-12T07:47:00.751908+00:00", "severity": null, "event": "grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/9afd7ea8-9364-4bb1-addb-d45380440029", "rel": "self"}]}], "next": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history?marker=NodeHistory(conductor='cat-tree2',created_at=2026-04-12T07:47:00Z,event='purr',event_type=None,id=2,node_id=1,severity=None,updated_at=None,user='sage',uuid=3201b0e7-3783-4d7c-93ae-9e06016cd94b)&fields=uuid,created_at,severity,event&limit=1&marker=9afd7ea8-9364-4bb1-addb-d45380440029"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid [0.069825s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 204 No Content Openstack-Request-Id: req-3eedac90-304c-4264-8ec6-5dfc943ac5fd 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.TestNodeHistory.test_get_history_item [0.069917s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/717d282c-7e34-4327-8e18-80899f6d3464 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9f30ffbb-0488-497a-821d-5ce21afbe07a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.78 {"uuid": "717d282c-7e34-4327-8e18-80899f6d3464", "created_at": "2026-04-12T07:47:00.852970+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/717d282c-7e34-4327-8e18-80899f6d3464", "rel": "self"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description [0.212869s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/672093cf-a4d9-4532-b8a5-d95630843180 WITH [{'path': '/description', 'value': 'meow', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e28bafd5-61f5-4470-a004-2b511ead59f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.51 {"uuid": "672093cf-a4d9-4532-b8a5-d95630843180", "created_at": "2026-04-12T07:47:00.750300+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/672093cf-a4d9-4532-b8a5-d95630843180", "rel": "self"}, {"href": "http://localhost/nodes/672093cf-a4d9-4532-b8a5-d95630843180", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/672093cf-a4d9-4532-b8a5-d95630843180/ports", "rel": "self"}, {"href": "http://localhost/nodes/672093cf-a4d9-4532-b8a5-d95630843180/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/672093cf-a4d9-4532-b8a5-d95630843180/states", "rel": "self"}, {"href": "http://localhost/nodes/672093cf-a4d9-4532-b8a5-d95630843180/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/672093cf-a4d9-4532-b8a5-d95630843180/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/672093cf-a4d9-4532-b8a5-d95630843180/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/672093cf-a4d9-4532-b8a5-d95630843180/volume", "rel": "self"}, {"href": "http://localhost/nodes/672093cf-a4d9-4532-b8a5-d95630843180/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_port.TestPatch.test_update_pxe_enabled_old_api_version [0.103623s] ... 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-bad166ae-a0f1-4608-88ee-256e4645a7bb 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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_byid_invalid_api_version [0.045916s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_not_found [0.047264s] ... 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-cbfd81c6-6f0f-4a80-b3d7-595f5141ea21 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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_invalid_power_state [0.040455s] ... 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-507cd2a2-e51d-43f1-a970-8d9590f80779 X-Openstack-Ironic-Api-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.controllers.v1.test_port.TestPortsController__GetPortsCollection.test__get_ports_collection [0.044069s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeHistory.test_get_history_item_old_version [0.059813s] ... 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\": \"\"}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestDelete.test_delete_volume_connector_node_locked [0.063973s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-dbbb2100-3328-490e-b278-46e0c720bf1b X-Openstack-Ironic-Api-Maximum-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_description_oversize [0.117537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/70e6b584-f5d2-4c62-9cfe-6f6f591635d8 WITH [{'path': '/description', 'value': '123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812 3456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678last weed', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-51158f35-1677-40b4-b1f3-b4c88b8ced36 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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeInventory.test_get_inventory [0.061520s] ... 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-61f96e98-2ae0-4706-9a99-cf4ed5911fd9 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"}]}} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_multi [0.128278s] ... 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-6ceed423-72a2-4ca1-b5cd-9c923f3a9b78 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": "2026-04-12T07:47:00.995735+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeInventory.test_get_inventory_no_inventory [0.039047s] ... 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-9ed167c1-cebe-43ad-ad54-56be0ba7cc85 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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links [0.102602s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f911fdb-9e0b-48b1-bb09-562c83dfc2ca 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": "2aaae929-964f-4600-94d1-fdb95854712f", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/2aaae929-964f-4600-94d1-fdb95854712f", "rel": "self"}, {"href": "http://localhost/volume/connectors/2aaae929-964f-4600-94d1-fdb95854712f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "691a17fd-1b32-42f7-89ab-5e7bf837949f", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/691a17fd-1b32-42f7-89ab-5e7bf837949f", "rel": "self"}, {"href": "http://localhost/volume/connectors/691a17fd-1b32-42f7-89ab-5e7bf837949f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "30d5a923-30a7-464c-9e16-efeed0987a8d", "connector_id": "test-connector_id-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/30d5a923-30a7-464c-9e16-efeed0987a8d", "rel": "self"}, {"href": "http://localhost/volume/connectors/30d5a923-30a7-464c-9e16-efeed0987a8d", "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=30d5a923-30a7-464c-9e16-efeed0987a8d"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeInventory.test_get_old_version [0.060460s] ... 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\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_id [0.142177s] ... 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-0593601d-b6b1-42df-b82a-a48f6842c3a0 X-Openstack-Ironic-Api-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.TestPatch.test_update_fails_bad_driver [0.230506s] ... 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-03ad6398-163a-461b-8732-6e0fd28a9d7d 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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_custom_fields [0.140298s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-abe3402f-9337-4046-93e1-a5d234fa387c 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": "07b2ba04-960e-4d97-83e1-9e0195743190", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/07b2ba04-960e-4d97-83e1-9e0195743190", "rel": "self"}, {"href": "http://localhost/volume/connectors/07b2ba04-960e-4d97-83e1-9e0195743190", "rel": "bookmark"}]}, {"uuid": "2a0cd427-ec56-4e6d-b46d-a580e35a9bb5", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/2a0cd427-ec56-4e6d-b46d-a580e35a9bb5", "rel": "self"}, {"href": "http://localhost/volume/connectors/2a0cd427-ec56-4e6d-b46d-a580e35a9bb5", "rel": "bookmark"}]}, {"uuid": "da7d0e7c-dc99-465d-ab53-87259a5d4a0a", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/da7d0e7c-dc99-465d-ab53-87259a5d4a0a", "rel": "self"}, {"href": "http://localhost/volume/connectors/da7d0e7c-dc99-465d-ab53-87259a5d4a0a", "rel": "bookmark"}]}], "next": "http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=da7d0e7c-dc99-465d-ab53-87259a5d4a0a"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePost.test_create_node_with_named_parent_node_succeeds [0.161529s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': 'c5773ba4-1b15-4f4a-b763-c146d97cfbcb', '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/c5773ba4-1b15-4f4a-b763-c146d97cfbcb Openstack-Request-Id: req-261366c3-32c9-44ee-987f-630a4828124c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"uuid": "c5773ba4-1b15-4f4a-b763-c146d97cfbcb", "created_at": "2026-04-12T07:47:01.262618+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/c5773ba4-1b15-4f4a-b763-c146d97cfbcb", "rel": "self"}, {"href": "http://localhost/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb/ports", "rel": "self"}, {"href": "http://localhost/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb/states", "rel": "self"}, {"href": "http://localhost/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb/volume", "rel": "self"}, {"href": "http://localhost/nodes/c5773ba4-1b15-4f4a-b763-c146d97cfbcb/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_node_uuid [0.121551s] ... 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-dbc84d9c-163e-412b-9150-87ec3edbbf5d 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": "2026-04-12T07:47:01.271119+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_default_limit [0.190508s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5b28080e-0c47-459a-b521-219da9854512 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": "02412bcf-28c9-4446-ae4d-e9024dbfbcaf", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/02412bcf-28c9-4446-ae4d-e9024dbfbcaf", "rel": "self"}, {"href": "http://localhost/volume/connectors/02412bcf-28c9-4446-ae4d-e9024dbfbcaf", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "bbdad2bd-9e42-4537-86f8-65e5e42fcba2", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/bbdad2bd-9e42-4537-86f8-65e5e42fcba2", "rel": "self"}, {"href": "http://localhost/volume/connectors/bbdad2bd-9e42-4537-86f8-65e5e42fcba2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "f68b37fd-8cbc-456f-af99-c329c1de2df2", "connector_id": "test-connector_id-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/f68b37fd-8cbc-456f-af99-c329c1de2df2", "rel": "self"}, {"href": "http://localhost/volume/connectors/f68b37fd-8cbc-456f-af99-c329c1de2df2", "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=f68b37fd-8cbc-456f-af99-c329c1de2df2"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_bad_driver_info [0.216749s] ... 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-c1b1dd1b-7efb-43ff-afb5-393d0ed3e752 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}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root [0.129475s] ... 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-96ca8b0f-8fe4-4646-95e6-7c9a8fd86410 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": "2026-04-12T07:47:01.402870+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.TestNodeParentNodePost.test_create_node_with_parent_node [0.145220s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': '2f40815c-2ef2-4c93-9331-fd5b67bc7205', '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/2f40815c-2ef2-4c93-9331-fd5b67bc7205 Openstack-Request-Id: req-8af0664f-ba3a-4447-8d6f-404652aefa23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"uuid": "2f40815c-2ef2-4c93-9331-fd5b67bc7205", "created_at": "2026-04-12T07:47:01.428586+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/2f40815c-2ef2-4c93-9331-fd5b67bc7205", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/ports", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/states", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/volume", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/volume", "rel": "bookmark"}]} GET /v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e3d5439-953c-4895-beea-1ce99fa1216f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.83 {"uuid": "2f40815c-2ef2-4c93-9331-fd5b67bc7205", "created_at": "2026-04-12T07:47:01.428586+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/2f40815c-2ef2-4c93-9331-fd5b67bc7205", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/ports", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/states", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/volume", "rel": "self"}, {"href": "http://localhost/nodes/2f40815c-2ef2-4c93-9331-fd5b67bc7205/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_collection_links_detail [0.068816s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?detail=True&limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d212ea81-3956-4363-95c2-6cdb21399cd3 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": "480c1134-3ea9-4da6-9ecc-6e29f72ce4bf", "created_at": "2026-04-12T07:47:01.467740+00:00", "updated_at": null, "connector_id": "test-connector_id-0", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/480c1134-3ea9-4da6-9ecc-6e29f72ce4bf", "rel": "self"}, {"href": "http://localhost/volume/connectors/480c1134-3ea9-4da6-9ecc-6e29f72ce4bf", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "ca4f4283-3d96-4599-a83b-da3114b6e4b3", "created_at": "2026-04-12T07:47:01.468610+00:00", "updated_at": null, "connector_id": "test-connector_id-1", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/ca4f4283-3d96-4599-a83b-da3114b6e4b3", "rel": "self"}, {"href": "http://localhost/volume/connectors/ca4f4283-3d96-4599-a83b-da3114b6e4b3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "64130d39-0429-4491-b521-b33143464ee4", "created_at": "2026-04-12T07:47:01.469443+00:00", "updated_at": null, "connector_id": "test-connector_id-2", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/64130d39-0429-4491-b521-b33143464ee4", "rel": "self"}, {"href": "http://localhost/volume/connectors/64130d39-0429-4491-b521-b33143464ee4", "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=64130d39-0429-4491-b521-b33143464ee4"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeParentNodePost.test_create_node_with_parent_node_fail_wrong_version [0.088145s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': 'a4164829-c24e-4568-af12-3e9353e8ab72', '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-682b83ef-8fe1-492d-a117-511be40d2bf4 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_volume_connector.TestListVolumeConnectors.test_detail [0.089322s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-19ab316e-64a8-4c9d-947b-f84eafd51088 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": "2026-04-12T07:47:01.544401+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_node.TestPatch.test_update_fails_on_disabled_bios_boot_mode [0.145836s] ... 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-f5b2cb1c-efee-4fe3-9893-a01c9d5dfdea 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}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_add_root_non_existent [0.153801s] ... 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-8decd5d9-6f85-4709-86aa-d0c1d2aeab57 X-Openstack-Ironic-Api-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_volume_connector.TestListVolumeConnectors.test_detail_against_single [0.104045s] ... 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-cb99d433-8bbe-4334-8e18-aa39adb160f9 X-Openstack-Ironic-Api-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.TestNodeShardGets.test_filtering_by_multi_shard_as_list [0.159558s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?shard=foo&shard=bar WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f449585d-a6a2-4313-a1b9-3c88f25ba453 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": "da5fbada-a189-4058-aa37-7c5964747ff7", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/da5fbada-a189-4058-aa37-7c5964747ff7", "rel": "self"}, {"href": "http://localhost/nodes/da5fbada-a189-4058-aa37-7c5964747ff7", "rel": "bookmark"}]}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_and_fields [0.038205s] ... 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-c88f1c48-a800-4a0a-97ea-e6727a1a5f15 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_on_disabled_uefi_boot_mode [0.153436s] ... 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-a362dcc2-7664-44a5-8cf5-3336b54f08c1 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.controllers.v1.test_portgroup.TestPatch.test_remove_address [0.161228s] ... 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-43c5e201-61f3-4fe3-8ab4-9f052442d237 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": "2026-04-12T07:47:01.718762+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.TestNodeShardGets.test_filtering_by_multi_shard_detail [0.107719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?shard=foo,bar WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-63c5b54b-c623-4ef6-8d20-bf0fe7fd2b9d 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": "428d9747-25c9-4063-b5a2-14a562e5203a", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/428d9747-25c9-4063-b5a2-14a562e5203a", "rel": "self"}, {"href": "http://localhost/nodes/428d9747-25c9-4063-b5a2-14a562e5203a", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_fails_on_invalid_boot_mode [0.073771s] ... ok {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_by_node_name_ok [0.107532s] ... 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-c70008e3-85c7-4b35-ae63-2bce10e99bcc 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": "2026-04-12T07:47:01.810349+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.TestListVolumeConnectors.test_detail_false [0.045457s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ddfe5565-7636-4117-963b-20cb31fa5470 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"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_mode_not_allowed [0.120789s] ... 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-9c97f828-5060-4334-a345-391a18622531 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeShardGets.test_filtering_by_shard [0.089860s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?shard=foo WITH {'fields': 'shard'} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9499388d-d6f1-444f-9666-6f9a16b58657 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_connector.TestListVolumeConnectors.test_detail_invalid_api_version [0.039966s] ... 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.TestNodeShardGets.test_filtering_by_shard_detail_fails_wrong_version [0.081729s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?shard=foo WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-9d86655d-8ca4-4843-abcd-46e4ec50b00b 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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_detail_sepecified_by_path [0.066413s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/detail WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f2ab5980-47ba-4129-90f5-61cf6484d944 X-Openstack-Ironic-Api-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.TestNodeShardGets.test_filtering_by_shard_fails_wrong_version [0.038197s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?shard=foo WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-d88cd819-3b43-40a4-941c-b1cf139483b6 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_portgroup.TestPatch.test_remove_multi [0.142008s] ... 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-0cf371d2-1ca5-49a6-99e4-5f804214abac 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": "2026-04-12T07:47:01.961309+00:00", "updated_at": "2026-04-12T07:47:01.987820+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-31a2cfb7-57df-4376-8262-2b11be041af3 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": "2026-04-12T07:47:01.961309+00:00", "updated_at": "2026-04-12T07:47:01.987820+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"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_empty [0.088471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c2e96b52-58c4-4b6a-abb5-bb8ba87d59f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"connectors": []} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_node_id [0.083519s] ... 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-a5c40c34-c30a-4d69-b636-652c9e1ff04a X-Openstack-Ironic-Api-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.TestNodeShardGets.test_filtering_by_sharded [0.144566s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes?sharded=true WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1d8de2ea-a314-4888-bb81-124df6f99fe5 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-d368a6f7-5415-4c34-8167-f5d967fe6322 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": "c9ff397f-05f9-43f0-9eb0-91f33b4079e7", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/c9ff397f-05f9-43f0-9eb0-91f33b4079e7", "rel": "self"}, {"href": "http://localhost/nodes/c9ff397f-05f9-43f0-9eb0-91f33b4079e7", "rel": "bookmark"}]}, {"uuid": "4424d07a-3d05-4f3b-9a3a-e51f42dd577c", "instance_uuid": null, "maintenance": false, "power_state": null, "provision_state": "available", "name": null, "links": [{"href": "http://localhost/v1/nodes/4424d07a-3d05-4f3b-9a3a-e51f42dd577c", "rel": "self"}, {"href": "http://localhost/nodes/4424d07a-3d05-4f3b-9a3a-e51f42dd577c", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_non_existent_property_fail [0.067453s] ... 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-966d1871-6e68-4833-95ed-7bb03c0b55fb X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_all_by_node_name_ok [0.124244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3ab702ee-fa15-40db-a125-4768f075d0ed 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": "ea2071cd-d0a0-4318-b562-cb1a56f98edf", "connector_id": "test-value-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/ea2071cd-d0a0-4318-b562-cb1a56f98edf", "rel": "self"}, {"href": "http://localhost/volume/connectors/ea2071cd-d0a0-4318-b562-cb1a56f98edf", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "20dd2e04-575e-4547-9803-72ad71a6a5ba", "connector_id": "test-value-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/20dd2e04-575e-4547-9803-72ad71a6a5ba", "rel": "self"}, {"href": "http://localhost/volume/connectors/20dd2e04-575e-4547-9803-72ad71a6a5ba", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "8fc95a88-90a8-4cb0-8396-d9c015000fbe", "connector_id": "test-value-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/8fc95a88-90a8-4cb0-8396-d9c015000fbe", "rel": "self"}, {"href": "http://localhost/volume/connectors/8fc95a88-90a8-4cb0-8396-d9c015000fbe", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_remove_uuid [0.085810s] ... 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-af383acc-c4f5-4f79-8d34-f10686b1a8b3 X-Openstack-Ironic-Api-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.TestNodeShardGets.test_filtering_by_single_shard_detail [0.107083s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail?shard=foo WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dc26eaad-59ff-4718-ac39-64369a8fc2ec 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": "2026-04-12T07:47:02.246371+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_connector.TestListVolumeConnectors.test_get_collection_custom_fields [0.075479s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c8e50482-0e8d-4248-af60-f0888a564104 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": "4c6fd23e-6d88-4683-9a9b-20c1264592f6", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/4c6fd23e-6d88-4683-9a9b-20c1264592f6", "rel": "self"}, {"href": "http://localhost/volume/connectors/4c6fd23e-6d88-4683-9a9b-20c1264592f6", "rel": "bookmark"}]}, {"uuid": "44099034-a57c-4938-97f7-f0028f211283", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/44099034-a57c-4938-97f7-f0028f211283", "rel": "self"}, {"href": "http://localhost/volume/connectors/44099034-a57c-4938-97f7-f0028f211283", "rel": "bookmark"}]}, {"uuid": "86248c18-0126-4d56-8b58-f9f276363292", "extra": {}, "links": [{"href": "http://localhost/v1/volume/connectors/86248c18-0126-4d56-8b58-f9f276363292", "rel": "self"}, {"href": "http://localhost/volume/connectors/86248c18-0126-4d56-8b58-f9f276363292", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_address_already_exist [0.070114s] ... 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-3568b82e-cb2c-42b4-b8f5-4dbffe2d414b X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_collection_pagination_no_uuid [0.085976s] ... 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-c0e5e418-1b8b-4534-bfbf-e8857bf1e404 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/4ff08fa5-968d-4704-b36e-613e644b7c8f", "rel": "self"}, {"href": "http://localhost/volume/connectors/4ff08fa5-968d-4704-b36e-613e644b7c8f", "rel": "bookmark"}]}, {"connector_id": "test-connector_id-1", "links": [{"href": "http://localhost/v1/volume/connectors/5a31f819-d091-44c9-9fd9-d85d588ac8fc", "rel": "self"}, {"href": "http://localhost/volume/connectors/5a31f819-d091-44c9-9fd9-d85d588ac8fc", "rel": "bookmark"}]}], "next": "http://localhost/v1/volume/connectors?sort_key=id&sort_dir=asc&fields=connector_id&limit=2&marker=5a31f819-d091-44c9-9fd9-d85d588ac8fc"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_multi [0.059290s] ... 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-705a8142-9dcd-45a2-b8de-3ae26e45e862 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": "2026-04-12T07:47:02.377840+00:00", "updated_at": "2026-04-12T07:47:02.386487+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.TestNodeShardGets.test_get_node_shard_field [0.171257s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b723e96e-8fda-426b-ab22-36effeffd228 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": "2026-04-12T07:47:02.377982+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_portgroup.TestPatch.test_replace_node_id [0.069402s] ... 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-21607c79-2da2-4799-9f96-e621e7764d2f X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_api_version [0.104889s] ... 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\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_node_uuid [0.060826s] ... 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-1bee001a-d365-4780-99ba-da1a2df0dd83 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": "2026-04-12T07:47:02.507703+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.TestNodeShardGets.test_get_node_shard_field_fails_wrong_version [0.116924s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c800d38a-8b91-42e4-a839-f5c35257cfc5 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": "2026-04-12T07:47:02.528990+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_portgroup.TestPatch.test_replace_non_existent_node_uuid [0.057373s] ... 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-f51dc66a-d715-40c1-aee3-74b76c45f38e X-Openstack-Ironic-Api-Maximum-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_volume_connector.TestListVolumeConnectors.test_get_custom_fields_invalid_fields [0.139535s] ... 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-ef986f02-18a6-453b-bded-4c91861cbbaf X-Openstack-Ironic-Api-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_node.TestNodeVmedia.test_attach [0.077515s] ... 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-741b742e-5ef4-4617-9953-cb8cfd2e492e 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.TestNodeVmedia.test_attach_invalid_device_type [0.037430s] ... 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-f2071213-44f2-4f7b-8aba-6221eaf3b5eb X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_replace_singular [0.129781s] ... 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-fd02f931-0b1c-4b7c-9dec-7c61a56ce9e5 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": "2026-04-12T07:47:02.660263+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.TestNodeVmedia.test_attach_invalid_image_url [0.056748s] ... 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-acb89528-9472-48fc-9738-d880ac1a9952 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one [0.110106s] ... 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-935db4c7-d1b7-4bc9-8199-29ce56447efd 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": "2026-04-12T07:47:02.731807+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"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_address_invalid_format [0.061787s] ... 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-5db5d9b8-673e-47e4-9a7c-89d476651d76 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_missing_device_type [0.059913s] ... 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-0f75d899-548c-4b4e-8c55-d683df1fe015 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_custom_fields [0.066087s] ... 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-9bc6757c-5e4c-4cb6-ac81-a78be4df4bf9 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"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byaddress_not_allowed [0.052635s] ... 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\"}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_get_one_invalid_api_version [0.076495s] ... 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\": \"\"}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid [0.073599s] ... 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-c2565b8b-e9b4-4ba1-a50f-203a9d181d1f 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": "2026-04-12T07:47:02.872647+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_missing_image_url [0.112255s] ... 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-1422b156-c190-408c-898d-728ec7dfa828 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_UPDATE_ALLOWED_STATES [1.119344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/2123a803-8608-410b-bcaa-9066f8fd3697 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f26e543a-eda5-4950-b612-790f286d798a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "2123a803-8608-410b-bcaa-9066f8fd3697", "created_at": "2026-04-12T07:47:01.892661+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/2123a803-8608-410b-bcaa-9066f8fd3697", "rel": "self"}, {"href": "http://localhost/nodes/2123a803-8608-410b-bcaa-9066f8fd3697", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2123a803-8608-410b-bcaa-9066f8fd3697/ports", "rel": "self"}, {"href": "http://localhost/nodes/2123a803-8608-410b-bcaa-9066f8fd3697/ports", "rel": "bookmark"}]} PATCH /v1/nodes/94c46c1b-1511-43ed-b2c2-c64873b7fe79 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-95d28832-51f0-4833-a497-e169e2516530 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "94c46c1b-1511-43ed-b2c2-c64873b7fe79", "created_at": "2026-04-12T07:47:01.965019+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/94c46c1b-1511-43ed-b2c2-c64873b7fe79", "rel": "self"}, {"href": "http://localhost/nodes/94c46c1b-1511-43ed-b2c2-c64873b7fe79", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/94c46c1b-1511-43ed-b2c2-c64873b7fe79/ports", "rel": "self"}, {"href": "http://localhost/nodes/94c46c1b-1511-43ed-b2c2-c64873b7fe79/ports", "rel": "bookmark"}]} PATCH /v1/nodes/2153c306-8dd9-4118-90b2-15146428e925 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f3f8e6f-c1b9-4417-b2ec-d44113cf796e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "2153c306-8dd9-4118-90b2-15146428e925", "created_at": "2026-04-12T07:47:02.028487+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/2153c306-8dd9-4118-90b2-15146428e925", "rel": "self"}, {"href": "http://localhost/nodes/2153c306-8dd9-4118-90b2-15146428e925", "rel": "bookmark"} ], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/2153c306-8dd9-4118-90b2-15146428e925/ports", "rel": "self"}, {"href": "http://localhost/nodes/2153c306-8dd9-4118-90b2-15146428e925/ports", "rel": "bookmark"}]} PATCH /v1/nodes/7da662b7-e3b1-43cc-b6a6-6770973322ee WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-edf618d8-5102-4392-81c5-c0ff62ddadbd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "7da662b7-e3b1-43cc-b6a6-6770973322ee", "created_at": "2026-04-12T07:47:02.128072+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/7da662b7-e3b1-43cc-b6a6-6770973322ee", "rel": "self"}, {"href": "http://localhost/nodes/7da662b7-e3b1-43cc-b6a6-6770973322ee", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/7da662b7-e3b1-43cc-b6a6-6770973322ee/ports", "rel": "self"}, {"href": "http://localhost/nodes/7da662b7-e3b1-43cc-b6a6-6770973322ee/ports", "rel": "bookmark"}]} PATCH /v1/nodes/636de07a-c0de-4806-ad36-302446d47114 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c7c12605-6f83-46d3-8ca3-0e611b546cea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "636de07a-c0de-4806-ad36-302446d47114", "created_at": "2026-04-12T07:47:02.460231+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/636de07a-c0de-4806-ad36-302446d47114", "rel": "self"}, {"href": "http://localhost/nodes/636de07a-c0de-4806-ad36-302446d47114", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/636de07a-c0de-4806-ad36-302446d47114/ports", "rel": "self"}, {"href": "http://localhost/nodes/636de07a-c0de-4806-ad36-302446d47114/ports", "rel": "bookmark"}]} PATCH /v1/nodes/acf5916a-f16a-4e9d-8a61-e5e7334b3dab WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2e6f3947-106b-44e4-8ba1-35eaaf5c7f67 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "acf5916a-f16a-4e9d-8a61-e5e7334b3dab", "created_at": "2026-04-12T07:47:02.545313+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/acf5916a-f16a-4e9d-8a61-e5e7334b3dab", "rel": "self"}, {"href": "http://localhost/nodes/acf5916a-f16a-4e9d-8a61-e5e7334b3dab", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/acf5916a-f16a-4e9d-8a61-e5e7334b3dab/ports", "rel": "self"}, {"href": "http://localhost/nodes/acf5916a-f16a-4e9d-8a61-e5e7334b3dab/ports", "rel": "bookmark"}]} PATCH /v1/nodes/58208151-080c-42f3-9d15-f1bae3b8be48 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fbd37a30-4041-482c-af89-2d46fabc0969 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "58208151-080c-42f3-9d15-f1bae3b8be48", "created_at": "2026-04-12T07:47:02.578439+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/58208151-080c-42f3-9d15-f1bae3b8be48", "rel": "self"}, {"href": "http://localhost/nodes/58208151-080c-42f3-9d15-f1bae3b8be48", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/58208151-080c-42f3-9d15-f1bae3b8be48/ports", "rel": "self"}, {"href": "http://localhost/nodes/58208151-080c-42f3-9d15-f1bae3b8be48/ports", "rel": "bookmark"}]} PATCH /v1/nodes/d9336fec-6821-4e3c-b566-3cfcdc45822c WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-63d074ac-04ea-46b8-a0a1-0b6c94390fde X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "d9336fec-6821-4e3c-b566-3cfcdc45822c", "created_at": "2026-04-12T07:47:02.633466+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/d9336fec-6821-4e3c-b566-3cfcdc45822c", "rel": "self"}, {"href": "http://localhost/nodes/d9336fec-6821-4e3c-b566-3cfcdc45822c", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d9336fec-6821-4e3c-b566-3cfcdc45822c/ports", "rel": "self"}, {"href": "http://localhost/nodes/d9336fec-6821-4e3c-b566-3cfcdc45822c/ports", "rel": "bookmark"}]} PATCH /v1/nodes/93a660fe-9310-48be-b283-808db6f0dd23 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a6c0a8ac-ddcb-49a7-bc05-cee07a294583 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "93a660fe-9310-48be-b283-808db6f0dd23", "created_at": "2026-04-12T07:47:02.697027+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/93a660fe-9310-48be-b283-808db6f0dd23", "rel": "self"}, {"href": "http://localhost/nodes/93a660fe-9310-48be-b283-808db6f0dd23", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/93a660fe-9310-48be-b283-808db6f0dd23/ports", "rel": "self"}, {"href": "http://localhost/nodes/93a660fe-9310-48be-b283-808db6f0dd23/ports", "rel": "bookmark"}]} PATCH /v1/nodes/4bfa7685-de56-49f5-ab8a-375604a04a0b WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aec9bdf4-1966-404c-856c-dae1a65858f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "4bfa7685-de56-49f5-ab8a-375604a04a0b", "created_at": "2026-04-12T07:47:02.775261+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/4bfa7685-de56-49f5-ab8a-375604a04a0b", "rel": "self"}, {"href": "http://localhost/nodes/4bfa7685-de56-49f5-ab8a-375604a04a0b", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/4bfa7685-de56-49f5-ab8a-375604a04a0b/ports", "rel": "self"}, {"href": "http://localhost/nodes/4bfa7685-de56-49f5-ab8a-375604a04a0b/ports", "rel": "bookmark"}]} PATCH /v1/nodes/82dd86fb-ea77-420d-a3cb-38b06dc68d78 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4252f264-bf97-4c89-b71e-161bc9e22161 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "82dd86fb-ea77-420d-a3cb-38b06dc68d78", "created_at": "2026-04-12T07:47:02.832757+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/82dd86fb-ea77-420d-a3cb-38b06dc68d78", "rel": "self"}, {"href": "http://localhost/nodes/82dd86fb-ea77-420d-a3cb-38b06dc68d78", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/82dd86fb-ea77-420d-a3cb-38b06dc68d78/ports", "rel": "self"}, {"href": "http://localhost/nodes/82dd86fb-ea77-420d-a3cb-38b06dc68d78/ports", "rel": "bookmark"}]} PATCH /v1/nodes/642d4c2e-1526-45bc-b854-059f803299e1 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-110962f5-aaa3-4ce7-b47a-d8f0d385e54f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "642d4c2e-1526-45bc-b854-059f803299e1", "created_at": "2026-04-12T07:47:02.871543+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/642d4c2e-1526-45bc-b854-059f803299e1", "rel": "self"}, {"href": "http://localhost/nodes/642d4c2e-1526-45bc-b854-059f803299e1", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/642d4c2e-1526-45bc-b854-059f803299e1/ports", "rel": "self"}, {"href": "http://localhost/nodes/642d4c2e-1526-45bc-b854-059f803299e1/ports", "rel": "bookmark"}]} PATCH /v1/nodes/29ca6d0d-7e94-432b-aade-cc0dcef39225 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-020054bf-ce54-4199-ba11-7ce10a0ec746 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "29ca6d0d-7e94-432b-aade-cc0dcef39225", "created_at": "2026-04-12T07:47:02.905906+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/29ca6d0d-7e94-432b-aade-cc0dcef39225", "rel": "self"}, {"href": "http://localhost/nodes/29ca6d0d-7e94-432b-aade-cc0dcef39225", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/29ca6d0d-7e94-432b-aade-cc0dcef39225/ports", "rel": "self"}, {"href": "http://localhost/nodes/29ca6d0d-7e94-432b-aade-cc0dcef39225/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byid_invalid_api_version [0.059990s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_attach_required_only [0.074215s] ... 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-4de26fc4-f16e-4a01-b3d4-7a80f23c3398 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.TestNodeVmedia.test_attach_wrong_version [0.044839s] ... 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_portgroup.TestPatch.test_update_byname [0.074219s] ... 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-3e2b91f9-4db4-42e9-9f3b-8061477dd73c 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": "2026-04-12T07:47:03.025075+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_volume_connector.TestListVolumeConnectors.test_links [0.162855s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-19ee3a19-effe-4fed-a466-93ebc853bfaf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "590ddc70-6f54-4355-8643-83187d7d0c80", "created_at": "2026-04-12T07:47:03.005922+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80", "rel": "self"}, {"href": "http://localhost/volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-80c131b7-2d01-4510-aeef-bb6cd54d6013 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "590ddc70-6f54-4355-8643-83187d7d0c80", "created_at": "2026-04-12T07:47:03.005922+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80", "rel": "self"}, {"href": "http://localhost/volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8ed65271-b0b9-4524-b69c-1bd36c94e43c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "590ddc70-6f54-4355-8643-83187d7d0c80", "created_at": "2026-04-12T07:47:03.005922+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80", "rel": "self"}, {"href": "http://localhost/volume/connectors/590ddc70-6f54-4355-8643-83187d7d0c80", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_everything [0.051522s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia GOT Response: 204 No Content Openstack-Request-Id: req-71ea0089-05b9-4a7e-bfaf-5c0620db2514 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.TestPatch.test_update_in_inspecting_allowed [0.159981s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b WITH [{'path': '/instance_uuid', 'op': 'remove'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6842b4d1-7459-4839-bdf1-a9baffc96a90 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.38 {"uuid": "48a435dc-5de4-41f8-b489-fbeff7c3ba4b", "created_at": "2026-04-12T07:47:03.018618+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/48a435dc-5de4-41f8-b489-fbeff7c3ba4b", "rel": "self"}, {"href": "http://localhost/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b/ports", "rel": "self"}, {"href": "http://localhost/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b/states", "rel": "self"}, {"href": "http://localhost/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b/volume", "rel": "self"}, {"href": "http://localhost/nodes/48a435dc-5de4-41f8-b489-fbeff7c3ba4b/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_byname_with_json [0.057355s] ... 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-8cc2f688-4248-4b57-aa18-d2f303cdf556 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": "2026-04-12T07:47:03.080592+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_several_via_argument [0.046666s] ... 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-89666c5e-13f6-4796-a036-e63edd908674 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_volume_connector.TestListVolumeConnectors.test_many [0.076386s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9bcab41c-c603-4e76-ba1e-f07324f68f34 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": "306058ce-b98b-43c8-bf94-767693e95ad5", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/306058ce-b98b-43c8-bf94-767693e95ad5", "rel": "self"}, {"href": "http://localhost/volume/connectors/306058ce-b98b-43c8-bf94-767693e95ad5", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "bf436b7b-9e64-485b-80de-354ceecd8182", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/bf436b7b-9e64-485b-80de-354ceecd8182", "rel": "self"}, {"href": "http://localhost/volume/connectors/bf436b7b-9e64-485b-80de-354ceecd8182", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "03a6496f-6490-4981-aee9-f536808880ea", "connector_id": "test-connector_id-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/03a6496f-6490-4981-aee9-f536808880ea", "rel": "self"}, {"href": "http://localhost/volume/connectors/03a6496f-6490-4981-aee9-f536808880ea", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "6cf083fd-e784-4692-9559-42b2f05c2dc6", "connector_id": "test-connector_id-3", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/6cf083fd-e784-4692-9559-42b2f05c2dc6", "rel": "self"}, {"href": "http://localhost/volume/connectors/6cf083fd-e784-4692-9559-42b2f05c2dc6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "fe00e4be-3e60-4864-ac74-e6fe2ff92dce", "connector_id": "test-connector_id-4", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/fe00e4be-3e60-4864-ac74-e6fe2ff92dce", "rel": "self"}, {"href": "http://localhost/volume/connectors/fe00e4be-3e60-4864-ac74-e6fe2ff92dce", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_in_inspecting_not_allowed [0.069584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/875003c7-2284-4180-a830-239ba6f1b3ac WITH [{'path': '/instance_uuid', 'op': 'remove'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-7cbf7eb4-b8c9-4843-b061-b66b0143d1b3 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 \\\"875003c7-2284-4180-a830-239ba6f1b3ac\\\" while it is in state \\\"inspecting\\\".\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_specific_via_argument [0.050148s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia?device_types=cdrom GOT Response: 204 No Content Openstack-Request-Id: req-aa5849bc-39db-429e-8410-f92f753a3c91 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_portgroup.TestPatch.test_update_in_inspecting_allowed [0.082397s] ... 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-c091b395-210b-499c-b6ec-f32b6c598669 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": "2026-04-12T07:47:03.150052+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_volume_connector.TestListVolumeConnectors.test_one [0.044634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bb74586b-e0ca-4975-8e4d-9764d7694328 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"}]} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_one_invalid_api_version [0.032938s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_specific_via_url [0.047737s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vmedia/cdrom GOT Response: 204 No Content Openstack-Request-Id: req-efd93fab-aa9d-4271-a6bd-850098c8cf9d 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_portgroup.TestPatch.test_update_in_inspecting_not_allowed [0.090462s] ... 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-ea1cb802-29e9-4b30-b330-10eaf0a1837c 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}"} {0} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestListVolumeConnectors.test_sort_key [0.066771s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-208d5608-795c-4d4f-a6f7-010d8e9e15e0 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": "8c593f6b-de45-40c3-a8ad-4eee7427d034", "connector_id": "test-connector_id-2", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/8c593f6b-de45-40c3-a8ad-4eee7427d034", "rel": "self"}, {"href": "http://localhost/volume/connectors/8c593f6b-de45-40c3-a8ad-4eee7427d034", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "be01327b-b5ed-4585-a4cb-655c8a3e9b90", "connector_id": "test-connector_id-0", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/be01327b-b5ed-4585-a4cb-655c8a3e9b90", "rel": "self"}, {"href": "http://localhost/volume/connectors/be01327b-b5ed-4585-a4cb-655c8a3e9b90", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "d97ac620-a931-4e38-9693-b69704613565", "connector_id": "test-connector_id-1", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/d97ac620-a931-4e38-9693-b69704613565", "rel": "self"}, {"href": "http://localhost/volume/connectors/d97ac620-a931-4e38-9693-b69704613565", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_invalid_name [0.070710s] ... 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-e1ab7f7e-b22c-4b7b-87cd-1f37d1468370 X-Openstack-Ironic-Api-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_volume_connector.TestListVolumeConnectors.test_sort_key_invalid [0.056302s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-1dfdae88-7055-42cc-8aa8-85f034adfc00 X-Openstack-Ironic-Api-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-d406acaf-9650-40de-8217-4b4c65249acc X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_authenticated [0.054338s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-804a5ed6-00e6-4b2f-8595-4cac817f4e22 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_middleware.TestBasicAuthMiddleware.test_authenticated_cached [0.075161s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be7ce6c9-a64e-447b-9161-23c5442265ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3307fdf6-05ad-4974-8010-7e8cdb56b2b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22b6baf2-c0cd-4492-925c-96d5a843d8cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ec954730-3bb0-4f57-80d5-e06359e17e23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d008662c-baf6-4f9f-af8f-495993a786e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2b3dc4cc-1cca-4e43-9e71-66f04500e2ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-869841d7-7e5c-4d77-8001-b30abbda06ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-84a58cc1-0838-41e7-a238-54c78cffc1c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-063acccd-3578-4a21-bd93-5ce15323c68c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"chassis": []} GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ae99147a-0cc9-4281-b440-07504f6227a3 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_middleware.TestBasicAuthMiddleware.test_not_authenticated [0.028513s] ... 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}} {0} ironic.tests.unit.api.test_middleware.TestBasicAuthMiddleware.test_public_unauthenticated [0.037103s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e266a9d5-20c8-4a9c-a708-2984658b7924 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.api.controllers.v1.test_node.TestNodeVmedia.test_detach_wrong_device_types [0.350355s] ... 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-6f4214a6-9cbd-49ad-ba60-fd9aec61a73c X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_disable_osp_wsgi_request [0.033827s] ... ok {0} ironic.tests.unit.api.test_ospmiddleware.TestOsprofilerWsgiMiddleware.test_enable_osp_wsgi_request [0.031238s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_detach_wrong_version [0.071517s] ... 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\": \"\"}"} {0} ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_disabled [0.034278s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8e861bd5-3148-4b1e-bca7-4b6c8ebaa66d 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"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_not_found [0.326424s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/1c793a68-f9cd-45cb-93d1-80d7b7c6f2ad WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-dd4a6062-83fa-4be0-acbe-ca3e563d8dc4 X-Openstack-Ironic-Api-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 1c793a68-f9cd-45cb-93d1-80d7b7c6f2ad could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_get [0.044829s] ... 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-c02510b8-ad13-4cef-8fbd-2a31a0be2c6a 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": ""}] {0} ironic.tests.unit.api.test_proxy_middleware.TestProxyHeadersMiddleware.test_proxy_headers_enabled [0.071730s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c7929a8f-b96d-4354-a239-7c8b68037c4e 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.controllers.v1.test_node.TestPatch.test_update_interface_fields [0.565441s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe WITH [{'path': '/boot_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0eaf4281-b07b-4af7-a220-6c6594b59f17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e18edd08-2b29-4957-b6c6-774595702afe", "created_at": "2026-04-12T07:47:03.232060+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/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "bookmark"}]} PATCH /v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe WITH [{'path': '/console_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c1d8a9ca-91b0-40f6-92de-6a811f71d933 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e18edd08-2b29-4957-b6c6-774595702afe", "created_at": "2026-04-12T07:47:03.232060+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/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "bookmark"}]} PATCH /v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe WITH [{'path': '/deploy_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dc7e6186-81ef-4cd6-b152-4bcae5ea1f9d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e18edd08-2b29-4957-b6c6-774595702afe", "created_at": "2026-04-12T07:47:03.232060+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/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe", "rel" : "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "bookmark"}]} PATCH /v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe WITH [{'path': '/inspect_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8563a1c-468c-4667-93b3-2961cb8da9b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e18edd08-2b29-4957-b6c6-774595702afe", "created_at": "2026-04-12T07:47:03.232060+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/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "bookmark"}]} PATCH /v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe WITH [{'path': '/management_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6ef31ed5-b37e-44be-93ad-615fbb4f9bed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e18edd08-2b29-4957-b6c6-774595702afe", "created_at": "2026-04-12T07:47:03.232060+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/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "bookmark"}]} PATCH /v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe WITH [{'path': '/power_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fe1d0f0a-6a8f-45d7-8019-340c5fedb57a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e18edd08-2b29-4957-b6c6-774595702afe", "created_at": "2026-04-12T07:47:03.232060+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/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "bookmark"}]} PATCH /v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe WITH [{'path': '/raid_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-78e61626-950b-462a-aa9c-dfe15f09be09 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e18edd08-2b29-4957-b6c6-774595702afe", "created_at": "2026-04-12T07:47:03.232060+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/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/node s/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "bookmark"}]} PATCH /v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe WITH [{'path': '/vendor_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d31defbd-f59a-45fa-a1bf-495433d6df56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e18edd08-2b29-4957-b6c6-774595702afe", "created_at": "2026-04-12T07:47:03.232060+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/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "self"}, {"href": "http://localhost/nodes/e18edd08-2b29-4957-b6c6-774595702afe/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_node.TestNodeVmedia.test_get_wrong_version [0.055829s] ... 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-f0d62fb8-3ce4-4a14-851e-0ffa5878e4d6 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_portgroup.TestPatch.test_update_portgroup_address_normalized [0.088317s] ... 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-3a037fb4-0acb-4067-bcfb-987847e1cf80 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": "2026-04-12T07:47:03.724217+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.common.test_args.ValidateDictTest.test_dict_valid [0.039069s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_chassis_notification [0.030357s] ... ok {0} ironic.tests.unit.common.test_args.ValidateDictTest.test_dict_valid_colon_key_name [0.027565s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_common_params [0.028377s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_internal_info_not_allowed [0.060456s] ... 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-4f8841eb-ae3b-45d0-ab2d-b18b474f1895 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_cinder.TestCinderUtils.test__create_metadata_dictionary [0.043438s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_emit_maintenance_notification [0.035374s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_interface_fields_bad_version [0.128505s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/73bb6bf3-d783-4c10-af9f-e65cfd99ce83 WITH [{'path': '/boot_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-fbf99b46-e2ec-4c89-9e45-319e64e58844 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/73bb6bf3-d783-4c10-af9f-e65cfd99ce83 WITH [{'path': '/console_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-72f5f437-87db-4035-a20e-6401f1e73849 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/73bb6bf3-d783-4c10-af9f-e65cfd99ce83 WITH [{'path': '/deploy_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-b6d486f8-417a-40b5-b27a-73253607982f 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/73bb6bf3-d783-4c10-af9f-e65cfd99ce83 WITH [{'path': '/inspect_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-dab5fc43-5eea-421b-9bea-3ab8fab89011 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/73bb6bf3-d783-4c10-af9f-e65cfd99ce83 WITH [{'path': '/management_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-42f08c67-7f5d-4d87-93ee-2db83255aeb6 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/73bb6bf3-d783-4c10-af9f-e65cfd99ce83 WITH [{'path': '/power_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-5c0ac458-ddb6-4ee0-b7bf-b3ccf87ef8b6 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/73bb6bf3-d783-4c10-af9f-e65cfd99ce83 WITH [{'path': '/raid_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-3b9537f5-19d0-46ef-8550-b51c866bf8c0 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/73bb6bf3-d783-4c10-af9f-e65cfd99ce83 WITH [{'path': '/vendor_interface', 'value': 'fake', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-13b2cd69-f598-411e-a659-5a80f995bc8e 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.common.test_cinder.TestCinderUtils.test__get_attachment_id [0.051203s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties [0.090313s] ... 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-5895059c-dbef-495d-a40e-19a6af1d3616 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": "2026-04-12T07:47:03.871730+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"}]} {0} ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_attached [0.030502s] ... ok {0} ironic.tests.unit.common.test_cinder.TestCinderUtils.test_is_volume_available [0.028788s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_duplicated_entry [0.032794s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_maintenance_notification [0.139166s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee [0.155246s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/63be0285-579d-40ee-9c32-c781e9c1818d WITH [{'path': '/lessee', 'value': 'new-project', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22a2f374-249e-4d97-ba52-b3c11972a2df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.65 {"uuid": "63be0285-579d-40ee-9c32-c781e9c1818d", "created_at": "2026-04-12T07:47:03.926234+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/63be0285-579d-40ee-9c32-c781e9c1818d", "rel": "self"}, {"href": "http://localhost/nodes/63be0285-579d-40ee-9c32-c781e9c1818d", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/63be0285-579d-40ee-9c32-c781e9c1818d/ports", "rel": "self"}, {"href": "http://localhost/nodes/63be0285-579d-40ee-9c32-c781e9c1818d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/63be0285-579d-40ee-9c32-c781e9c1818d/states", "rel": "self"}, {"href": "http://localhost/nodes/63be0285-579d-40ee-9c32-c781e9c1818d/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/63be0285-579d-40ee-9c32-c781e9c1818d/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/63be0285-579d-40ee-9c32-c781e9c1818d/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/63be0285-579d-40ee-9c32-c781e9c1818d/volume", "rel": "self"}, {"href": "http://localhost/nodes/63be0285-579d-40ee-9c32-c781e9c1818d/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_empty_entry [0.032063s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_init_checks_unsupported [0.027159s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification [0.072274s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_mode_properties_bad_api_version [0.151468s] ... 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-6215dd11-e52e-4601-b76b-cdaefac145d4 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-fa58e058-ca1a-4961-a915-76625592028c 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}"} {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_driver_load_error_if_driver_enabled [0.052301s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_node_notification_mask_secrets [0.053291s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported [0.063730s] ... 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-747ec24b-42ac-4763-8069-2333e51c2d41 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": "2026-04-12T07:47:04.106851+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_notification_utils.APINotifyTestCase.test_port_notification [0.034434s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_lessee_old_api [0.132164s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/8326e97b-3b68-4016-b2c8-9b9a20e5c77f WITH [{'path': '/lessee', 'value': 'new-project', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-514216ad-0976-45ec-b1d7-8ed3433db3e0 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.common.test_driver_factory.DriverLoadTestCase.test_no_driver_load_error_if_driver_disabled [0.059965s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_notification_utils.APINotifyTestCase.test_portgroup_notification [0.027668s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPatch.test_update_portgroup_standalone_ports_supported_bad_api_version [0.066530s] ... 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_port.TestPortsController__GetPortByAddress.test__get_ports_by_address [0.040550s] ... ok {0} ironic.tests.unit.common.test_driver_factory.DriverLoadTestCase.test_wrap_in_driver_load_error_if_driver_enabled [0.068956s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestGlanceSerializer.test_serialize [0.000982s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_is_glance_image [0.040072s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup [0.078764s] ... 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-76c73479-1dc3-4711-a316-1b4d18d75d5e 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-90c81ba5-d859-4bf3-8bfa-846dd16fde90 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"}]} {0} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_fail [0.046821s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance [0.021681s] ... ok {0} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_glance_fail [0.025966s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data [0.233775s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6 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-fb3cdf39-ddf5-4061-953e-3a452ec8248c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.66 {"uuid": "60d0e9dc-e161-46b2-9e03-8108187515e6", "created_at": "2026-04-12T07:47:04.259762+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/60d0e9dc-e161-46b2-9e03-8108187515e6", "rel": "self"}, {"href": "http://localhost/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6/ports", "rel": "self"}, {"href": "http://localhost/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/60d0e9dc-e161-46b2-9e03 -8108187515e6/states", "rel": "self"}, {"href": "http://localhost/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6/volume", "rel": "self"}, {"href": "http://localhost/nodes/60d0e9dc-e161-46b2-9e03-8108187515e6/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port [0.178566s] ... 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-d83c2572-fc82-4ee2-96c5-fe33280dc63c 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-729ceb29-4948-457f-b004-530abed712d2 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"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_already_exist [0.120482s] ... 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-a71b7ae8-9988-4101-8b71-4d8567812c0d 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": "2026-04-12T07:47:04.365221+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': '8ca081a1-0445-419c-8fa7-1aa32f94c15c', 'name': '2651961f-5d06-43c9-bfb8-32d9a98c62c9', '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-664db996-f9e4-48da-b606-90069bf6c2d5 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_address_normalized [0.087801s] ... 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-7586e1d4-f5d1-41fc-b5b7-98fe8687f6f0 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": "2026-04-12T07:47:04.482363+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-2250dc1d-710a-489a-8bb4-dec0a00225e4 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": "2026-04-12T07:47:04.482363+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_already_exist [0.099283s] ... 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-2b5ccbf3-25bb-40b7-a1f3-0bbf7ceb4b59 X-Openstack-Ironic-Api-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_portgroup.TestPost.test_create_portgroup_default_mode [0.084533s] ... 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-821e793e-0bce-4f36-ba24-471626c06256 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": "2026-04-12T07:47:04.573695+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_node.TestPatch.test_update_network_data_custom [0.239286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0 WITH [{'path': '/network_data', 'value': {'cat': 'meow'}, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b34d891-9848-4fe8-bd97-e2dc2e9511ab X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.66 {"uuid": "49947e69-3057-4f3f-9e7c-27e1ae49a8a0", "created_at": "2026-04-12T07:47:04.527393+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/49947e69-3057-4f3f-9e7c-27e1ae49a8a0", "rel": "self"}, {"href": "http://localhost/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0/ports", "rel": "self"}, {"href": "http://localhost/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0/states", "rel": "self"}, {"href": "http://localhost/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0/volume", "rel": "self"}, {"href": "http://localhost/nodes/49947e69-3057-4f3f-9e7c-27e1ae49a8a0/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_address_normalized [0.132170s] ... 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-45ae1c2f-9969-4265-9b58-0ad080a5fa20 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": "2026-04-12T07:47:04.609482+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-f7237a9d-8a96-41cd-a7fb-7d0212e81d71 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": "2026-04-12T07:47:04.609482+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_portgroup.TestPost.test_create_portgroup_doesnt_contain_id [0.058004s] ... 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-392a6169-2cf2-4a21-a7b5-c02b5ddfa005 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": "2026-04-12T07:47:04.623761+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-555c0f8b-7ce3-4a2a-901c-197fe96dbb1d 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": "2026-04-12T07:47:04.623761+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"}]} {0} ironic.tests.unit.common.test_glance_service.TestServiceUtils.test_parse_image_id_from_uuid [0.275907s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_error [0.044343s] ... 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-9b33bdbb-ab81-4958-9c9c-9ad7c5136f02 X-Openstack-Ironic-Api-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.common.test_glance_service.TestSwiftTempUrlCache.test_add_items_to_cache [0.073106s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_generate_uuid [0.055295s] ... 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/1568e0f3-fa65-41ef-8699-a67d256faa40 Openstack-Request-Id: req-f2414387-2a32-4f25-b493-064e56b397de X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1568e0f3-fa65-41ef-8699-a67d256faa40", "created_at": "2026-04-12T07:47:04.731364+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/1568e0f3-fa65-41ef-8699-a67d256faa40", "rel": "self"}, {"href": "http://localhost/portgroups/1568e0f3-fa65-41ef-8699-a67d256faa40", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/1568e0f3-fa65-41ef-8699-a67d256faa40/ports", "rel": "self"}, {"href": "http://localhost/portgroups/1568e0f3-fa65-41ef-8699-a67d256faa40/ports", "rel": "bookmark"}]} GET /v1/portgroups/1568e0f3-fa65-41ef-8699-a67d256faa40 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-265f52c7-398d-43cd-81bd-619aff656a07 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1568e0f3-fa65-41ef-8699-a67d256faa40", "created_at": "2026-04-12T07:47:04.731364+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/1568e0f3-fa65-41ef-8699-a67d256faa40", "rel": "self"}, {"href": "http://localhost/portgroups/1568e0f3-fa65-41ef-8699-a67d256faa40", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/1568e0f3-fa65-41ef-8699-a67d256faa40/ports", "rel": "self"}, {"href": "http://localhost/portgroups/1568e0f3-fa65-41ef-8699-a67d256faa40/ports", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_old_api [0.118448s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/ee7905b5-fc61-4e89-9b93-43cd8d0cb77c 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-50a2b472-ffdb-42a9-a2fc-df7f238bf8af 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}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_doesnt_contain_id [0.135275s] ... 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-4052dc04-6bff-4b20-8866-184521c3e191 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": "2026-04-12T07:47:04.738819+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-f9ff9d1f-1ccc-4a39-a41c-daf80b2a8ad5 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": "2026-04-12T07:47:04.738819+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"} {0} ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_do_not_return_expired_tempurls [0.060865s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_internal_info_not_allowed [0.045930s] ... 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-d85ba902-3e6f-4325-b5d0-c950a0b37662 X-Openstack-Ironic-Api-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.common.test_glance_service.TestSwiftTempUrlCache.test_remove_expired_items_from_cache [0.026470s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_addr_format [0.037836s] ... 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-9c395302-283e-4a47-a56a-c6a8a9ab2d7b X-Openstack-Ironic-Api-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.common.test_glance_service.TestSwiftTempUrlCache.test_return_cached_tempurl [0.036533s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_data_wrong_format [0.102604s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/059f2f47-a458-42b9-99c6-23711dfcc182 WITH [{'path': '/network_data', 'value': {'cat': 'meow'}, 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-fd844557-8283-4d00-9965-eeecba394753 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}"} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_api_version [0.048102s] ... 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-0e990335-4be6-4b06-9969-7dcd28fc2ebe 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_port.TestPost.test_create_port_error [0.132423s] ... 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-0fdd964c-025e-4a6d-bbd4-3201fc8c9f74 X-Openstack-Ironic-Api-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.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_disabled [0.056729s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_invalid_node_uuid_format [0.054240s] ... 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-88df63dc-de6b-426a-8966-b249184ad47b X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_glance_service.TestSwiftTempUrlCache.test_swift_temp_url_cache_enabled [0.039868s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_old_api_version [0.072942s] ... 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-ba3b053c-aa1b-4606-b818-aa2a0699d29a 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-08315ee8-d6be-4dce-8ce0-33e97fb3d797 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}"} {0} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_external_ip [0.067816s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_generate_uuid [0.116038s] ... 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/4a604edb-4f04-457d-acbd-75579fdb46f9 Openstack-Request-Id: req-d845e1be-f343-40a1-a209-e62597132338 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4a604edb-4f04-457d-acbd-75579fdb46f9", "created_at": "2026-04-12T07:47:04.994400+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/4a604edb-4f04-457d-acbd-75579fdb46f9", "rel": "self"}, {"href": "http://localhost/ports/4a604edb-4f04-457d-acbd-75579fdb46f9", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} GET /v1/ports/4a604edb-4f04-457d-acbd-75579fdb46f9 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bcd35220-dd31-4792-933a-800cfcc50d25 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4a604edb-4f04-457d-acbd-75579fdb46f9", "created_at": "2026-04-12T07:47:04.994400+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/4a604edb-4f04-457d-acbd-75579fdb46f9", "rel": "self"}, {"href": "http://localhost/ports/4a604edb-4f04-457d-acbd-75579fdb46f9", "rel": "bookmark"}], "portgroup_uuid": "6eb02b44-18a3-4659-8c0b-8d2802581ae4"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface [0.200744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd WITH [{'path': '/network_interface', 'value': 'flat', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8f383cbe-e2ae-442e-963d-66e4bec92592 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b85d1148-b225-4223-bc9e-9418adb49fdd", "created_at": "2026-04-12T07:47:04.937647+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/b85d1148-b225-4223-bc9e-9418adb49fdd", "rel": "self"}, {"href": "http://localhost/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd/ports", "rel": "self"}, {"href": "http://localhost/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd/states", "rel": "self"}, {"href": "http://localhost/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd/volume", "rel": "self"}, {"href": "http://localhost/nodes/b85d1148-b225-4223-bc9e-9418adb49fdd/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_mode_properties [0.056702s] ... 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-c3d08e26-ab32-444b-9d1c-205e9fd3c417 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": "2026-04-12T07:47:05.055043+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_invalid [0.041678s] ... 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-d1083353-5663-4bfc-a7dd-cd51d3c29786 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_addr_format [0.090122s] ... 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-8b74ca46-99b3-4165-b055-d511b04e7b50 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.common.test_image_publisher.LocalPublisherTestCase.test_publish_external_ip_node_override [0.102994s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_name_ok [0.066384s] ... 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-2e84e898-a1d4-4f90-9010-3fe73a57ebe3 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": "2026-04-12T07:47:05.156673+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-55158564-03e3-4385-b27a-a5977ccf6dd6 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": "2026-04-12T07:47:05.156673+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_node_uuid_format [0.068538s] ... 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-8c399efa-bb75-43a6-bbf3-b7a581381093 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}"} {0} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_local_copy [0.064308s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_network_interface_old_api [0.141781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/215cf00d-bd56-493e-a660-f7a5b76dcb3a WITH [{'path': '/network_interface', 'value': 'flat', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-5bd50eb7-07ce-4b3c-b0fb-3231f390eab8 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.TestPost.test_create_portgroup_no_address [0.083812s] ... 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-5596014d-3ec6-4194-b75e-14b027ae1656 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": "2026-04-12T07:47:05.222900+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-6a3df2c0-12a6-401c-bbb0-7c9539ec7e78 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": "2026-04-12T07:47:05.222900+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"}]} {0} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_local_link [0.093146s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_empty_string [0.109017s] ... 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-fece78db-afe8-4cf7-b6a9-d23e91382cb9 X-Openstack-Ironic-Api-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.controllers.v1.test_portgroup.TestPost.test_create_portgroup_no_mandatory_field_node_uuid [0.062696s] ... 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-b9bcdce1-72a9-4a99-8067-a555d2ca2766 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_publish_local_link_no_restorecon [0.041279s] ... ok {0} ironic.tests.unit.common.test_image_publisher.LocalPublisherTestCase.test_unpublish_local [0.036422s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_node_uuid_not_found [0.056189s] ... 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-2225d18d-180d-4837-90e7-fd9ff67914d6 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_connerror [0.036576s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok [0.199169s] ... 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-2d68a7fc-b006-4e10-b2bb-a85df86e260e 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": "2026-04-12T07:47:05.263283+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_non_text [0.120100s] ... 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-d8845e18-1cc9-46bb-886f-dc672a7edc3c X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_false_ioerror [0.026950s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_ioerror [0.022548s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_v123 [0.100934s] ... 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-0509738c-9dc9-4b90-84aa-fcab0709d6c3 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-e7547b8e-4399-4d81-9792-6d71ca4d0701 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.common.test_image_service.HttpImageServiceTestCase.test_download_fail_verify_true_oserror [0.046010s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_invalid_physnet_too_long [0.084474s] ... 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-a3c143c0-b77c-40dd-9129-028e8764479e X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name [0.136712s] ... 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-14d49d11-ba72-40ce-bbab-b302c2ab5072 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": "2026-04-12T07:47:05.433713+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"}]} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_custom_timeout [0.046511s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_create_portgroup_valid_extra [0.095562s] ... 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-8a851582-be3c-42fe-af10-76870821ecd0 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": "2026-04-12T07:47:05.548485+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-39ff969d-5306-42c4-8d27-a13a5baaa352 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": "2026-04-12T07:47:05.548485+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"}]} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_http_scheme [0.046784s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false [0.025249s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_keys [0.097850s] ... 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-60234c71-906e-401b-b804-273bf7dfc45a 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": "2026-04-12T07:47:05.604127+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_portgroup.TestPost.test_create_portgroup_with_hyphens_delimiter [0.068321s] ... 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-09f1f100-73d3-4751-add5-209c1c5d5fc7 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false_basic_auth_failed [0.033261s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_false_basic_auth_sucess [0.033506s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_path [0.034912s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_mandatory [0.107824s] ... 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-8b7bc254-f520-464a-86f4-40a7bd7e619a X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true [0.027665s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_ok_by_name_with_json [0.212910s] ... 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-f297333a-df12-4a1a-be17-b2a004e79ee5 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": "2026-04-12T07:47:05.615598+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_portgroup.TestPost.test_node_uuid_to_node_id_mapping [0.118823s] ... 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-47c2b2d9-a3aa-43a0-981b-79b74c9cf0ad 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": "2026-04-12T07:47:05.749954+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.common.test_image_service.HttpImageServiceTestCase.test_download_success_verify_true_connerror [0.036872s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_gen_auth_from_conf_user_pass_none [0.027819s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionAutoDiscovery.test_enroll [0.077284s] ... 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-2d757467-7c2a-435d-8586-e504a0aa45b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "38c120fe-686d-424f-81fb-0f051c966c05"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_gen_auth_from_conf_user_pass_success [0.034148s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_missing_optional [0.128712s] ... 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-cf8e10ba-4eb0-4c55-bbeb-c87b099d7275 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": "2026-04-12T07:47:05.843806+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"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_get_handles_exceptions [0.042442s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner [0.141201s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6a5e8e02-c0ae-44f3-a32e-01ad3df8a42b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "3f3e51d0-b734-4f22-b0e2-457261e2accc", "created_at": "2026-04-12T07:47:05.831894+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/3f3e51d0-b734-4f22-b0e2-457261e2accc", "rel": "self"}, {"href": "http://localhost/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc/ports", "rel": "self"}, {"href": "http://localhost/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc/states", "rel": "self"}, {"href": "http://localhost/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc/volume", "rel": "self"}, {"href": "http://localhost/nodes/3f3e51d0-b734-4f22-b0e2-457261e2accc/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionAutoDiscovery.test_override_defaults [0.062992s] ... 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-9e87fab7-6eae-4b66-aff7-3998454c804b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "ea8088d0-a916-4486-82ba-d7805afbe3f2"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_local_link_connection_switch_id_bad_mac [0.091883s] ... 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-e9fdb7c6-c80e-4f90-b9d9-42e24de0d426 X-Openstack-Ironic-Api-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_ramdisk.TestContinueInspectionAutoDiscovery.test_wrong_driver [0.045754s] ... 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-b5bcce0d-409b-4d26-ba92-9499e00e4c4e 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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_get_success [0.081576s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_bmc_address_as_none [0.043573s] ... 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-abe6d44a-900b-4818-9f05-db3106d13384 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "2f2feefd-ee42-482e-87d0-a01ede738eea"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_get_success_verify_false [0.040554s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation [0.126789s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6 WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8a001de0-4445-41d9-91ec-63dc49c714eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "f7a8bc0a-bf80-4508-b742-c92dda60d5a6", "created_at": "2026-04-12T07:47:05.957927+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/f7a8bc0a-bf80-4508-b742-c92dda60d5a6", "rel": "self"}, {"href": "http://localhost/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6/ports", "rel": "self"}, {"href": "http://localhost/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6/states", "rel": "self"}, {"href": "http://localhost/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6/volume", "rel": "self"}, {"href": "http://localhost/nodes/f7a8bc0a-bf80-4508-b742-c92dda60d5a6/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_min_api_version [0.076442s] ... 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-2ba66c02-a1d7-44e1-aa73-6bc65078e897 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": "2026-04-12T07:47:06.026854+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_ramdisk.TestContinueInspectionScopedRBAC.test_inspector_compatibility [0.067174s] ... 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-9e8d8534-60c4-4456-bd77-e58da3bc9057 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "f5b1e81d-32e6-40fc-a30e-aae9c06114de"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_ansi_c [0.067941s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_allocation_owned [0.079055s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/dbcafea3-d1c8-47cd-9bbd-fa3ca6b6e5dd WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-b4664ed0-d783-4df6-96e1-cd2c8679c2f5 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 \\\"dbcafea3-d1c8-47cd-9bbd-fa3ca6b6e5dd\\\" while it is allocated to an allocation with an owner.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_invalid_schema [0.041278s] ... 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-e8268b51-22c5-4cee-81a1-221707076e7b X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_cache_allowed [0.038709s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_no_mandatory_field_address [0.092148s] ... 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-8c0dc4f7-6cdc-464e-88eb-e0fbd1aac61f X-Openstack-Ironic-Api-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.common.test_image_service.HttpImageServiceTestCase.test_show_cache_disabled [0.023725s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_new_api [0.049250s] ... 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-c3de2473-9cd1-425b-b405-f5a73c57d62f 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": "ef4f19e7-46e2-446f-adc5-93696f7ce65b", "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/ef4f19e7-46e2-446f-adc5-93696f7ce65b", "rel": "self"}, {"href": "http://localhost/nodes/ef4f19e7-46e2-446f-adc5-93696f7ce65b", "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_port.TestPost.test_create_port_no_mandatory_field_node_uuid [0.050059s] ... 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-8ef2e8f1-eda8-4192-941b-e132ddc0dc35 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.TestPatch.test_update_owner_old_api [0.080675s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/4467e009-1ba4-45b2-a2ca-7117b55f21d6 WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-ac5f6fe1-4505-4240-96be-667db1891f78 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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_no_content_length [0.034181s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_822 [0.032348s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_no_usable_lookup_data [0.066599s] ... 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-7a76fe06-960e-408f-9178-f470000b7aeb X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_show_rfc_850 [0.047668s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspectionScopedRBAC.test_old_api_version [0.051036s] ... 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-89e9994e-0e6f-4ada-9a2e-7d03a041f071 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}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_node_uuid_not_found [0.107498s] ... 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-399980f7-4474-4931-9557-7231e45e12ee 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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_custom_timeout [0.043133s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_owner_provisioned [0.139736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5 WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8fe8a542-4613-498b-81b2-fdee31e81ad7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.50 {"uuid": "d24c91a9-c6ee-4f3d-b763-e362c34fd4e5", "created_at": "2026-04-12T07:47:06.252529+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/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5", "rel": "self"}, {"href": "http://localhost/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5", "rel": "bookmark"}], "conductor": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5/ports", "rel": "self"}, {"href": "http://localhost/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5/states", "rel": "self"}, {"href": "http://localhost/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5/volume", "rel": "self"}, {"href": "http://localhost/nodes/d24c91a9-c6ee-4f3d-b763-e362c34fd4e5/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_fast_deploy_lookup [0.059160s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=355e39b1-3e7f-4b58-9a45-904508015a9c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1fb864ab-cd60-4d18-a919-45fba7d0f0c2 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": "355e39b1-3e7f-4b58-9a45-904508015a9c", "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/355e39b1-3e7f-4b58-9a45-904508015a9c", "rel": "self"}, {"href": "http://localhost/nodes/355e39b1-3e7f-4b58-9a45-904508015a9c", "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=355e39b1-3e7f-4b58-9a45-904508015a9c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f92ab689-6686-4b13-927d-173b3ec392a6 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": "355e39b1-3e7f-4b58-9a45-904508015a9c", "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/355e39b1-3e7f-4b58-9a45-904508015a9c", "rel": "self"}, {"href": "http://localhost/nodes/355e39b1-3e7f-4b58-9a45-904508015a9c", "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=355e39b1-3e7f-4b58-9a45-904508015a9c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bb70a9f4-05c4-4236-9624-8117421ccd86 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": "355e39b1-3e7f-4b58-9a45-904508015a9c", "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/355e39b1-3e7f-4b58-9a45-904508015a9c", "rel": "self"}, {"href": "http://localhost/nodes/355e39b1-3e7f-4b58-9a45-904508015a9c", "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"]}} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_error_with_secret_parameter [0.035671s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_http_scheme [0.036158s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_noportgroup [0.092635s] ... 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-0c572a50-db0e-4f36-acef-f091f2f389f7 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": "2026-04-12T07:47:06.371918+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.TestPatch.test_update_owner_provisioned_forbidden [0.072095s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/58280da4-cdd0-4ef4-b93b-be4393b19565 WITH [{'path': '/owner', 'value': 'meow', 'op': 'replace'}] GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-98aefd18-d64e-41c9-948d-32148674ca84 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 \\\"58280da4-cdd0-4ef4-b93b-be4393b19565\\\" while it is in state \\\"active\\\".\", \"debuginfo\": null}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_forbidden [0.031086s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_addresses [0.084610s] ... 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-fa1905be-14e0-400a-a4d6-db620c3ff389 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": "7c918e8d-45b5-443b-9d58-76388d4a935f", "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/7c918e8d-45b5-443b-9d58-76388d4a935f", "rel": "self"}, {"href": "http://localhost/nodes/7c918e8d-45b5-443b-9d58-76388d4a935f", "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"]}} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_path_redirected [0.050005s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_nopxe_portgroup_nostandalone_ports [0.103895s] ... 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-54041713-20bd-4d6f-b1e5-216927951b1f 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": "2026-04-12T07:47:06.466708+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"} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_only_uuid [0.058238s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?node_uuid=e6817078-dd7b-4da4-885e-640378f8b94c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-83dcc62e-b7af-43ac-8c0b-0288dd365bc7 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": "e6817078-dd7b-4da4-885e-640378f8b94c", "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/e6817078-dd7b-4da4-885e-640378f8b94c", "rel": "self"}, {"href": "http://localhost/nodes/e6817078-dd7b-4da4-885e-640378f8b94c", "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"]}} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_valid_path_invalid_basic_auth [0.067871s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected [0.142431s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068 WITH [{'path': '/protected', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4602f1b6-6fc0-467a-a149-073a21fa9a6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "6dc567c2-b520-47ef-880b-fd29d8af3068", "created_at": "2026-04-12T07:47:06.463827+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/6dc567c2-b520-47ef-880b-fd29d8af3068", "rel": "self"}, {"href": "http://localhost/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068/ports", "rel": "self"}, {"href": "http://localhost/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068/states", "rel": "self"}, {"href": "http://localhost/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068/volume", "rel": "self"}, {"href": "http://localhost/nodes/6dc567c2-b520-47ef-880b-fd29d8af3068/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_found_by_uuid [0.063859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=b9858ff3-b3f2-4655-a203-08079efcd223 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cd3737fe-fa2c-495d-9848-ca88643918f4 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": "b9858ff3-b3f2-4655-a203-08079efcd223", "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/b9858ff3-b3f2-4655-a203-08079efcd223", "rel": "self"}, {"href": "http://localhost/nodes/b9858ff3-b3f2-4655-a203-08079efcd223", "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"]}} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_valid_path_valid_basic_auth [0.063138s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_ignore_malformed_address [0.053649s] ... 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-d13b75a9-e73d-408f-b846-19b4e92a6376 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": "dd1191c7-6e30-4563-bd1f-c2d051526eac", "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/dd1191c7-6e30-4563-bd1f-c2d051526eac", "rel": "self"}, {"href": "http://localhost/nodes/dd1191c7-6e30-4563-bd1f-c2d051526eac", "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"]}} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_old_api [0.091352s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/294a9110-1049-4701-b46d-22bf1dbcf5da WITH [{'path': '/protected', 'value': True, 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-a84881ee-ee62-45b1-bcb1-5bc7efd90d14 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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_connect_error [0.079694s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_invalid_input_addresses [0.062358s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=meow1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-80f404ff-6fca-4632-b96b-aebfc0c15b14 X-Openstack-Ironic-Api-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_port.TestPost.test_create_port_novif_nopxe_portgroup_standalone_ports [0.200764s] ... 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-a1fa1e5d-f1ad-4ee7-825a-e988c149b714 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": "2026-04-12T07:47:06.655683+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"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_error [0.028743s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false [0.026701s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_false_error [0.032328s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_os_error [0.044047s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_noportgroup [0.116155s] ... 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-3c176d2a-8b31-4fc9-96a0-b52f1be99691 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": "2026-04-12T07:47:06.784109+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} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true [0.035948s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_reason [0.212995s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd WITH [{'path': '/protected_reason', 'value': 'reason!', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6b8b1f00-1161-4621-bb78-d3688bd2a6d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "44cebcec-4d4c-40be-86d8-fa174c464fdd", "created_at": "2026-04-12T07:47:06.724526+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/44cebcec-4d4c-40be-86d8-fa174c464fdd", "rel": "self"}, {"href": "http://localhost/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd/ports", "rel": "self"}, {"href": "http://localhost/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd/states", "rel": "self"}, {"href": "http://localhost/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd/volume", "rel": "self"}, {"href": "http://localhost/nodes/44cebcec-4d4c-40be-86d8-fa174c464fdd/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_true_error [0.022279s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_validate_href_verify_valid_path [0.051376s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_nostandalone_ports [0.144348s] ... 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-3d361f65-4dbd-447b-9e4c-b0a7ba725a43 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format [0.035984s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format_empty_password [0.021465s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format_empty_user [0.020320s] ... ok {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format_none_password [0.018308s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_remove [0.183537s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/1eeb255c-c438-42dc-aca4-3932080effd4 WITH [{'op': 'remove', 'path': '/protected'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-625bfe4d-b63b-4ac8-b338-c2878190aaed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "1eeb255c-c438-42dc-aca4-3932080effd4", "created_at": "2026-04-12T07:47:06.944807+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/1eeb255c-c438-42dc-aca4-3932080effd4", "rel": "self"}, {"href": "http://localhost/nodes/1eeb255c-c438-42dc-aca4-3932080effd4", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1eeb255c-c438-42dc-aca4-3932080effd4/ports", "rel": "self"}, {"href": "http://localhost/nodes/1eeb255c-c438-42dc-aca4-3932080effd4/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1eeb255c-c438-42dc-aca4-3932080effd4/states", "rel": "self"}, {"href": "http://localhost/nodes/1eeb255c-c438-42dc-aca4-3932080effd4/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1eeb255c-c438-42dc-aca4-3932080effd4/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1eeb255c-c438-42dc-aca4-3932080effd4/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1eeb255c-c438-42dc-aca4-3932080effd4/volume", "rel": "self"}, {"href": "http://localhost/nodes/1eeb255c-c438-42dc-aca4-3932080effd4/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.common.test_image_service.HttpImageServiceTestCase.test_verify_basic_auth_cred_format_none_user [0.021929s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__create_root_fs [0.025917s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__generate_grub_cfg [0.050964s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_novif_pxe_portgroup_standalone_ports [0.177444s] ... 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-4120aaa3-d287-41c1-b067-d1af4d2ca88f 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": "2026-04-12T07:47:07.082581+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.TestLookupScopedRBAC.test_invalid_input_node_uuid [0.473755s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?node_uuid=meow1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-0f97565e-300b-420b-a0d3-bbb2941f8d2a X-Openstack-Ironic-Api-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.common.test_images.FsImageTestCase.test__generate_isolinux_cfg [0.066024s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string [0.160832s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469 WITH [{'path': '/protected', 'value': 'True', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03fef378-9899-47d3-90cf-e44be5c71e91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "7570ecde-180e-479a-8ff0-c363ab8ba469", "created_at": "2026-04-12T07:47:07.074353+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/7570ecde-180e-479a-8ff0-c363ab8ba469", "rel": "self"}, {"href": "http://localhost/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469/ports", "rel": "self"}, {"href": "http://localhost/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469/states", "rel": "self"}, {"href": "http://localhost/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469/volume", "rel": "self"}, {"href": "http://localhost/nodes/7570ecde-180e-479a-8ff0-c363ab8ba469/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_no_restrict_lookup [0.088899s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=f6cc84cc-2546-4890-ae61-2677676133c1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22e16773-96b3-4e83-a00e-057193a7cb30 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": "f6cc84cc-2546-4890-ae61-2677676133c1", "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/f6cc84cc-2546-4890-ae61-2677676133c1", "rel": "self"}, {"href": "http://localhost/nodes/f6cc84cc-2546-4890-ae61-2677676133c1", "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"]}} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files [0.071200s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup [0.155831s] ... 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-21fa7b26-83d7-4a8c-a202-fb4b3df40c4b 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": "2026-04-12T07:47:07.281951+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.TestLookupScopedRBAC.test_not_found [0.058417s] ... 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-0df9369a-92ad-4f63-906c-3a50facc38d4 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_no_esp_imageimg [0.057778s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_nothing_provided [0.051096s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-5dd005f9-cd6a-4a0a-aec0-56f059be1c18 X-Openstack-Ironic-Api-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_port.TestPost.test_create_port_portgroup_different_nodes [0.070875s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/ports WITH {'uuid': '1be26c0b-03f2-4d2e-ae87-c02d7f33c781', 'node_uuid': 'd4016b57-1a11-43ad-99f8-cf3fbc7d3854', '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-363e9cc2-7c8e-47a4-8219-3b9db4e7cd6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node d4016b57-1a11-43ad-99f8-cf3fbc7d3854 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fail_with_ExecutionError [0.059003s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_string_invalid [0.208252s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/508fc1cf-06d0-4743-9010-591d80f785de WITH [{'path': '/protected', 'value': 'YeahNahGood', 'op': 'replace'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-8381a16e-809e-4182-9ff9-ab085d371656 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}"} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test__get_deploy_iso_files_fails_no_grub_cfg [0.033494s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_old_api_version [0.061814s] ... 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-7373a198-cbfd-4b48-8527-a8a9ac68ed11 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_port.TestPost.test_create_port_portgroup_old_api_version [0.084993s] ... 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-b4319126-a2ae-41b2-ba64-d1a5e71b449b 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.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios [0.050070s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookupScopedRBAC.test_restrict_lookup [0.061291s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=caefc2ee-2959-4ac0-8125-488a599f0339 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0d028792-c9ab-4f25-adb5-55c8fc471caa X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_bios_with_no_boot_mode [0.034438s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found [0.080734s] ... 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-22764e22-adc6-4fb6-8e40-4ac019201966 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso [0.037710s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_protected_with_reason [0.137890s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/05df2c45-92d3-487f-9872-97bad1da5946 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-6dee31bc-2afe-4843-a870-f4373f5d9cc7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.48 {"uuid": "05df2c45-92d3-487f-9872-97bad1da5946", "created_at": "2026-04-12T07:47:07.474150+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/05df2c45-92d3-487f-9872-97bad1da5946", "rel": "self"}, {"href": "http://localhost/nodes/05df2c45-92d3-487f-9872-97bad1da5946", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/05df2c45-92d3-487f-9872-97bad1da5946/ports", "rel": "self"}, {"href": "http://localhost/nodes/05df2c45-92d3-487f-9872-97bad1da5946/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/05df2c45-92d3-487f-9872-97bad1da5946/states", "rel": "self"}, {"href": "http://localhost/nodes/05df2c45-92d3-487f-9872-97bad1da5946/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/05df2c45-92d3-487f-9872-97bad1da5946/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/05df2c45-92d3-487f-9872-97bad1da5946/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/05df2c45-92d3-487f-9872-97bad1da5946/volume", "rel": "self"}, {"href": "http://localhost/nodes/05df2c45-92d3-487f-9872-97bad1da5946/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve [0.056087s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_deploy_iso_for_hrefs [0.037072s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node [0.031926s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_no_node_policy_notfound [0.026023s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_policy_forbidden [0.023650s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_portgroup_uuid_not_found_old_api_version [0.115904s] ... 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-7eb75b59-0d19-4c6c-a81b-63778968a962 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_utils.TestCheckNodePolicyAndRetrieve.test_check_node_policy_and_retrieve_with_suffix [0.023526s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image [0.090631s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy [0.027909s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckOwnerPolicy.test_check_owner_policy_forbidden [0.021370s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve [0.029754s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port [0.026900s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class [0.236064s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/800e1919-19ee-4556-a6c1-b23956c692ed WITH [{'path': '/resource_class', 'value': 'foo', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-398dc574-6fc3-4bbf-9292-3600ea7d3fdd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"uuid": "800e1919-19ee-4556-a6c1-b23956c692ed", "created_at": "2026-04-12T07:47:07.666322+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/800e1919-19ee-4556-a6c1-b23956c692ed", "rel": "self"}, {"href": "http://localhost/nodes/800e1919-19ee-4556-a6c1-b23956c692ed", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/800e1919-19ee-4556-a6c1-b23956c692ed/ports", "rel": "self"}, {"href": "http://localhost/nodes/800e1919-19ee-4556-a6c1-b23956c692ed/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/800e1919-19ee-4556-a6c1-b23956c692ed/states", "rel": "self"}, {"href": "http://localhost/nodes/800e1919-19ee-4556-a6c1-b23956c692ed/states", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_no_port_policy_forbidden [0.039390s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_some_invalid_local_link_connection_key [0.149886s] ... 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-6057d510-9e5a-4220-9ba3-b55f62c377b4 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortPolicyAndRetrieve.test_check_port_policy_and_retrieve_policy_notfound [0.023283s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_fields [0.031677s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_max_length [0.113914s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/072f9a0a-b546-4308-b291-fc7c9461367d WITH [{'path': '/resource_class', 'value': 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a3002a41-9548-4532-86a4-87ded050fd2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.21 {"uuid": "072f9a0a-b546-4308-b291-fc7c9461367d", "created_at": "2026-04-12T07:47:07.823261+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/072f9a0a-b546-4308-b291-fc7c9461367d", "rel": "self"}, {"href": "http://localhost/nodes/072f9a0a-b546-4308-b291-fc7c9461367d", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/072f9a0a-b546-4308-b291-fc7c9461367d/ports", "rel": "self"}, {"href": "http://localhost/nodes/072f9a0a-b546-4308-b291-fc7c9461367d/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/072f9a0a-b546-4308-b291-fc7c9461367d/states", "rel": "self"}, {"href": "http://localhost/nodes/072f9a0a-b546-4308-b291-fc7c9461367d/states", "rel": "bookmark"}]} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_links [0.041649s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_args [0.022917s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestObjectToDict.test_no_base_attributes [0.031628s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_valid_extra [0.163838s] ... 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-09d4dde3-0534-4f62-9e9d-4f7debbdbc89 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": "2026-04-12T07:47:07.938039+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-d1061306-8f92-43ce-8009-d05199bef968 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": "2026-04-12T07:47:07.938039+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"} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy [0.022317s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_check_policy_forbidden [0.029074s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_old_api [0.110239s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/34f264c6-09a5-45ba-9459-0b2398860a3f WITH [{'path': '/resource_class', 'value': 'foo', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-748059e8-88d3-4947-a548-bc6dc2e19a65 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_utils.TestVendorPassthru.test_driver_vendor_passthru_async [0.035308s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_boot_iso_for_uefi_esp_image_for_hrefs [0.400816s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_noportgroup [0.100111s] ... 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-2a2663d7-90d9-49ca-b02f-e39274e2c049 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": "2026-04-12T07:47:08.047569+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} {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_driver_vendor_passthru_sync [0.042488s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_deploy_iso [0.049501s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_get_controller_reserved_names [0.028469s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_method_not_specified [0.024968s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_resource_class_too_long [0.134430s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/d2bb7534-4e3a-45f6-96fd-c8ce1a71cf25 WITH [{'path': '/resource_class', 'value': 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a8267c8f-0504-400a-ad6b-9baa85a5cc59 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.common.test_images.FsImageTestCase.test_create_esp_image_for_uefi_with_esp_image [0.048361s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_mkisofs_fails [0.045820s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_async [0.074921s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_esp_image_uefi_rootfs_fails [0.046742s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach [0.047754s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_byte_to_byte [0.026959s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_mkisofs_fails [0.033243s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_attach_unicode_to_byte [0.024174s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired [0.167789s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5 WITH [{'path': '/retired', 'value': True, 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fb427ad6-4361-4945-8fd8-30ed46f56cba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "5734e044-1080-4a9e-ad92-9188d65d3de5", "created_at": "2026-04-12T07:47:08.230217+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/5734e044-1080-4a9e-ad92-9188d65d3de5", "rel": "self"}, {"href": "http://localhost/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5/ports", "rel": "self"}, {"href": "http://localhost/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5/states", "rel": "self"}, {"href": "http://localhost/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5/volume", "rel": "self"}, {"href": "http://localhost/nodes/5734e044-1080-4a9e-ad92-9188d65d3de5/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_bios_rootfs_fails [0.027657s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios [0.032833s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_utils.TestVendorPassthru.test_vendor_passthru_sync [0.040654s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_conf_ldlinux [0.028470s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_duplicates [0.032411s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_default_ldlinux [0.033859s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_max_ver_str [0.044755s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_isolinux_image_for_bios_inject_files [0.026289s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image [0.026110s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_min_ver_str [0.043116s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_dd_fails [0.030193s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_versions.TestVersionConstants.test_name_value_match [0.022911s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_create_vfat_image_mkfs_fails [0.037578s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_default_all [0.046440s] ... ok {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_no_such_prop [0.020457s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_multi [0.102843s] ... 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-917f489f-28b8-43f4-a267-89fd81502e10 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": "2026-04-12T07:47:08.570471+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"} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_get_glance_image_properties_with_prop_subset [0.034710s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_nopxe_portgroup_standalone_ports [0.587913s] ... 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-fa70bc0d-4eaf-441b-9151-59cf7e33e576 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": "2026-04-12T07:47:08.636777+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"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_id [0.054370s] ... 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-5428394e-82f8-43a6-9d2b-c9d65b586e95 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_images.FsImageTestCase.test_get_temp_url_for_glance_image [0.065235s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_noportgroup [0.087480s] ... 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-7ca7fc10-7a7a-4911-bab7-8e6d7b8dcf3b 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": "2026-04-12T07:47:08.734329+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} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid [0.088414s] ... 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-f26abfe2-963e-413c-a31d-856ad0d3a817 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": "2026-04-12T07:47:08.723008+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_node.TestPatch.test_update_retired_old_api [0.440216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/3d4da0e8-dd1a-42be-80c9-6f30a747f755 WITH [{'path': '/retired', 'value': True, 'op': 'replace'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-63fd3b1f-bafa-42a5-bc58-973bccad16b9 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}"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_connection_error [0.055249s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_node_uuid_invalid_type [0.057775s] ... 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-fc132075-7e97-41b7-82d6-3afe47ff9609 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_vif_pxe_portgroup_nostandalone_ports [0.079272s] ... 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-051c1bb0-25d9-4fd3-9901-9f21518479f0 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_empty [0.081619s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root [0.069426s] ... 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-4583c3e7-a22b-4524-a7cc-c53a2cd13803 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": "2026-04-12T07:47:08.856531+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"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_reason [0.136271s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8 WITH [{'path': '/retired_reason', 'value': 'a better reason', 'op': 'replace'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c74b9d2a-9db3-47dc-b9ce-73c60db09a7d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "8861fb8b-decc-4fde-8f94-f671e10140c8", "created_at": "2026-04-12T07:47:08.821576+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/8861fb8b-decc-4fde-8f94-f671e10140c8", "rel": "self"}, {"href": "http://localhost/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8/ports", "rel": "self"}, {"href": "http://localhost/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8/states", "rel": "self"}, {"href": "http://localhost/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8/volume", "rel": "self"}, {"href": "http://localhost/nodes/8861fb8b-decc-4fde-8f94-f671e10140c8/volume", "rel": "bookmark"}]} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http [0.067998s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_add_root_non_existent [0.054594s] ... 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-97acbb2e-dcb3-4310-ae76-252e5db00586 X-Openstack-Ironic-Api-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_port.TestPost.test_create_port_vif_pxe_portgroup_standalone_ports [0.129760s] ... 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-bed0b7c3-3ff6-496f-a39b-4a9d3e4b3a23 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": "2026-04-12T07:47:08.919989+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.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_error [0.096083s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_mandatory_field [0.083873s] ... 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-678e5473-d636-4009-aa2d-90595d6b3b79 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_retired_remove [0.151753s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233 WITH [{'op': 'remove', 'path': '/retired'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7acea74f-d55b-4307-915d-b9f5ef5a220b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "0504f7d9-d3eb-42a0-91b2-e4f19e483233", "created_at": "2026-04-12T07:47:08.965493+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/0504f7d9-d3eb-42a0-91b2-e4f19e483233", "rel": "self"}, {"href": "http://localhost/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233/ports", "rel": "self"}, {"href": "http://localhost/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233/states", "rel": "self"}, {"href": "http://localhost/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233/volume", "rel": "self"}, {"href": "http://localhost/nodes/0504f7d9-d3eb-42a0-91b2-e4f19e483233/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_hyphens_delimiter [0.111793s] ... 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-4a9c5291-4574-4c1b-a96a-d486f6cae4c7 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_multi [0.120378s] ... 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-dbffd457-2cba-4bac-8d9c-1f526054f137 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": "2026-04-12T07:47:09.049945+00:00", "updated_at": "2026-04-12T07:47:09.053092+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-7d0c705c-b402-42dc-a157-cc3454de9389 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": "2026-04-12T07:47:09.049945+00:00", "updated_at": "2026-04-12T07:47:09.053092+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"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_http_noauth [0.138890s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_internal_field [0.126358s] ... 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-0e0ed1bc-6694-43f3-b3f5-8b00d334b0a3 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.TestPatch.test_update_retired_with_reason [0.157699s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0 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-d53dbb06-142e-4d5b-b173-e517fbeac0e2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.61 {"uuid": "5add6e5d-537e-48dc-8023-91eeb1dfd1b0", "created_at": "2026-04-12T07:47:09.140126+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/5add6e5d-537e-48dc-8023-91eeb1dfd1b0", "rel": "self"}, {"href": "http://localhost/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0/ports", "rel": "self"}, {"href": "http://localhost/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0/states", "rel": "self"}, {"href": "http://localhost/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0/volume", "rel": "self"}, {"href": "http://localhost/nodes/5add6e5d-537e-48dc-8023-91eeb1dfd1b0/volume", "rel": "bookmark"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_state [0.052900s] ... 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-81142d11-5478-4e60-bf7c-5945426505cc 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_node_id [0.122933s] ... 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-87864459-1976-4d50-8fe4-539dbfbc2f34 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_invalid_json [0.195131s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_storage_interface [0.111044s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/c7d911d3-fb01-45cc-ae07-733702d95657 WITH [{'path': '/storage_interface', 'value': 'cinder', 'op': 'add'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-05fe5f51-3f36-4ecd-a395-967ceb11fa5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c7d911d3-fb01-45cc-ae07-733702d95657", "created_at": "2026-04-12T07:47:09.313709+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/c7d911d3-fb01-45cc-ae07-733702d95657", "rel": "self"}, {"href": "http://localhost/nodes/c7d911d3-fb01-45cc-ae07-733702d95657", "rel": "bookmark"}], "conductor": null, "allocation_uuid": null, "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/c7d911d3-fb01-45cc-ae07-733702d95657/ports", "rel": "self"}, {"href": "http://localhost/nodes/c7d911d3-fb01-45cc-ae07-733702d95657/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c7d911d3-fb01-45cc-ae07-733702d95657/states", "rel": "self"}, {"href": "http://localhost/nodes/c7d911d3-fb01-45cc-ae07-733702d95657/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c7d911d3-fb01-45cc-ae07-733702d95657/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c7d911d3-fb01-45cc-ae07-733702d95657/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c7d911d3-fb01-45cc-ae07-733702d95657/volume", "rel": "self"}, {"href": "http://localhost/nodes/c7d911d3-fb01-45cc-ae07-733702d95657/volume", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic [0.189246s] ... 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-ad783106-20d8-46e6-9058-35dcf0cc8b48 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": "2026-04-12T07:47:09.364538+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_volume_connector.TestPatch.test_remove_non_existent_property_fail [0.142549s] ... 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-6dfe957d-4cb0-490c-ae8c-b92862666aff X-Openstack-Ironic-Api-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_node.TestPatch.test_update_storage_interface_old_api [0.072040s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/ce1f1955-6aae-4a45-8792-d231f4ccb25a WITH [{'path': '/storage_interface', 'value': 'cinder', 'op': 'add'}] GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-60f3e8d9-8834-41ea-af80-a0e491c07801 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_remove_uuid [0.063794s] ... 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-9e841553-0587-4a20-8308-e2b0774539b6 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_default_value [0.105380s] ... 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-5c9602ca-c22e-4be8-924c-b0185ebafe18 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": "2026-04-12T07:47:09.470797+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.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_mold_connection_error_exceeded [0.166763s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_traits [0.082979s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/nodes/d2953059-2064-4228-b886-e80b34dacf5f WITH [{'path': '/traits', 'value': ['CUSTOM_1'], 'op': 'add'}] GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-25fe84df-9f68-4a86-b914-2a8770b6e171 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_connector_id_already_exist [0.072568s] ... 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-7924f18d-f8a7-4240-a3d9-ebb0eca1f941 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_missing_hostname [0.116088s] ... 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-a3a98ec5-be75-481c-8302-b3f7634dbf3a X-Openstack-Ironic-Api-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_volume_connector.TestPatch.test_replace_invalid_power_state [0.101574s] ... 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-0ebf3825-080a-42b7-9d7d-b9aecca44d75 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift [0.148431s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPatch.test_update_with_reset_interfaces [0.179010s] ... 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-80b7be66-e98b-430d-939a-8d6d67af0927 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": "2026-04-12T07:47:09.581993+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_port.TestPost.test_create_port_with_is_smartnic_missing_port_id [0.141006s] ... 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-8bfbf1df-a965-4ab9-a464-37d3e8c24d4f X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_get_configuration_swift_noauth [0.097206s] ... ok {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error [0.048640s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node [0.103691s] ... 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-4d99fe92-258b-4711-914c-019499b4ac2b 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-ca67ea42-880f-4683-b867-16474ce6b358 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"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_multi [0.172731s] ... 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-e0c27a08-adee-4875-bb3b-b5acdf4734f0 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": "2026-04-12T07:47:09.746297+00:00", "updated_at": "2026-04-12T07:47:09.749246+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"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_is_smartnic_old_api_version [0.107534s] ... 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-4ce46594-d67a-4c5c-9957-d640e238a6cb 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}"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_connection_error_exceeded [0.066937s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_id [0.072883s] ... 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-9c755c1b-3f7e-4589-b9d3-c1fa76ec7ef3 X-Openstack-Ironic-Api-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_node.TestPost.test_create_node_automated_clean [0.111596s] ... 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-96de50c3-4800-474a-aa5e-0864c67b3aae 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": "2026-04-12T07:47:09.908622+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-f16ad10b-0956-4380-8d98-a877a5185198 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": "2026-04-12T07:47:09.908622+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_llc_old_api_version [0.102001s] ... 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-e39461ba-6f9b-47d4-90be-eaa1dab07d9c 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}"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http [0.109857s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_automated_clean_old_api_version [0.087497s] ... 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-11644173-484a-4be5-a358-2d06be7963fc 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.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_error [0.061783s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc [0.106152s] ... 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-5bfbc148-0bc9-4372-aa1c-e617e7d9a12b 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": "2026-04-12T07:47:10.057435+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"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_http_noauth [0.075753s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_always_in_response [0.137361s] ... 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-a023e8e8-9444-4f8d-a4c1-140b7479b8eb 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-26ae9d0a-9f61-442b-a0d2-fa77041810ba 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': '1915937e-f690-48e6-a755-60de8c6ab506', '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/1915937e-f690-48e6-a755-60de8c6ab506 Openstack-Request-Id: req-8822a7d4-1803-4d8d-9161-4dcbc3cfeead X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1915937e-f690-48e6-a755-60de8c6ab506", "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/1915937e-f690-48e6-a755-60de8c6ab506", "rel": "self"}, {"href": "http://localhost/nodes/1915937e-f690-48e6-a755-60de8c6ab506", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1915937e-f690-48e6-a755-60de8c6ab506/ports", "rel": "self"}, {"href": "http://localhost/nodes/1915937e-f690-48e6-a755-60de8c6ab506/ports", "rel": "bookmark"}]} GET /v1/nodes/1915937e-f690-48e6-a755-60de8c6ab506 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-834c0a57-2c90-4115-ac14-7ffa018e3b3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "1915937e-f690-48e6-a755-60de8c6ab506", "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/1915937e-f690-48e6-a755-60de8c6ab506", "rel": "self"}, {"href": "http://localhost/nodes/1915937e-f690-48e6-a755-60de8c6ab506", "rel": "bookmark"}], "chassis_uuid": null, "ports": [{"href": "http://localhost/v1/nodes/1915937e-f690-48e6-a755-60de8c6ab506/ports", "rel": "self"}, {"href": "http://localhost/nodes/1915937e-f690-48e6-a755-60de8c6ab506/ports", "rel": "bookmark"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_network_type_in_llc_old_api_version [0.103184s] ... 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-ad23f39d-2b30-4194-a8bf-e942668b75ef 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.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid [0.307994s] ... 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-6f8d2808-ddd7-44a5-93ba-9db967d69e2a 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": "2026-04-12T07:47:10.179958+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.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift [0.094136s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_chassis_uuid_not_found [0.107929s] ... 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-27eae274-8d0d-4f96-ad3a-7fd4d14c4fc1 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_node_uuid_invalid_type [0.062123s] ... 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-f71e8f31-097c-4f05-985d-3ff7e3c1388a X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network [0.126821s] ... 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-375d9799-27a5-40bf-b436-b4db44ba1408 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": "2026-04-12T07:47:10.273881+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"} {0} ironic.tests.unit.common.test_molds.ConfigurationMoldTestCase.test_save_configuration_swift_noauth [0.083171s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_non_existent_node_uuid [0.058378s] ... 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-68a72a2f-9b69-4407-a325-e678a5912c93 X-Openstack-Ironic-Api-Maximum-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.controllers.v1.test_node.TestPost.test_create_node_default_state_enroll [0.108491s] ... 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-5ca3f153-b0d8-4afc-8152-6b292961228a 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": "2026-04-12T07:47:10.356557+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-b380759a-cf30-4351-a2f4-147487d94f11 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": "2026-04-12T07:47:10.356557+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_old_api_version [0.096325s] ... 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-ff5bc895-f7e6-458b-8bdd-7b6ead1b0227 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_replace_singular [0.073147s] ... 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-8af55b2f-e38d-4e30-840d-e2248e6c12d0 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": "2026-04-12T07:47:10.365647+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"} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_byid [0.057524s] ... 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-a280f69e-7f81-4696-a917-1adecf78ba8a 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": "2026-04-12T07:47:10.438502+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"} {0} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_empty [0.167357s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_default_state_none [0.110302s] ... 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-6eb160bd-cf3a-4937-ae20-8a7eddf93340 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": "2026-04-12T07:47:10.457888+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-d063d774-f8de-4142-a8de-8bcd7ff8545c 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": "2026-04-12T07:47:10.457888+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-951c90e1-3b7c-4b98-82b0-f1e4e3c34579 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": "2026-04-12T07:47:10.457888+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_invalid_api_version [0.062465s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_physical_network_upgrade [0.136854s] ... 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-db6fef00-185f-4c97-b4e2-762a64776347 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port [0.074165s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPatch.test_update_not_found [0.043946s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/fd5c8add-38d3-497b-b487-4fc828dccd29 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b2dab7e9-b574-4a71-b59b-8d618c69c25a X-Openstack-Ironic-Api-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 fd5c8add-38d3-497b-b487-4fc828dccd29 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_exclude_port_no_id [0.057792s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links [0.054134s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cc7d3544-1dcc-479d-92a1-1e5251645d20 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": "005c32b6-aea1-4031-8d34-0a7a9ba0f653", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/005c32b6-aea1-4031-8d34-0a7a9ba0f653", "rel": "self"}, {"href": "http://localhost/volume/targets/005c32b6-aea1-4031-8d34-0a7a9ba0f653", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "0342cf71-166a-483d-8a23-8d43d25cf4b2", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/0342cf71-166a-483d-8a23-8d43d25cf4b2", "rel": "self"}, {"href": "http://localhost/volume/targets/0342cf71-166a-483d-8a23-8d43d25cf4b2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "a1362457-8b64-40cd-8338-2419931fb50b", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/a1362457-8b64-40cd-8338-2419931fb50b", "rel": "self"}, {"href": "http://localhost/volume/targets/a1362457-8b64-40cd-8338-2419931fb50b", "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=a1362457-8b64-40cd-8338-2419931fb50b"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description [0.149486s] ... 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-6f33e668-4b1d-48f1-a171-75d814f8ab70 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": "2026-04-12T07:47:10.594572+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-6a057133-a6ef-47cf-a51a-f0eadbf28bbc 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": "2026-04-12T07:47:10.594572+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_create_port_with_pxe_enabled_old_api_version [0.109565s] ... 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-cec878de-97e7-4e41-bbbf-5b972e129e8e 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_custom_fields [0.056140s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a2c3019f-bd77-4e75-ae92-7c55e178bce7 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": "a28fd767-c246-419a-abbd-eca901eb7179", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/a28fd767-c246-419a-abbd-eca901eb7179", "rel": "self"}, {"href": "http://localhost/volume/targets/a28fd767-c246-419a-abbd-eca901eb7179", "rel": "bookmark"}]}, {"uuid": "fdaca1d0-609a-4327-b70e-37b53d8d3c9b", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/fdaca1d0-609a-4327-b70e-37b53d8d3c9b", "rel": "self"}, {"href": "http://localhost/volume/targets/fdaca1d0-609a-4327-b70e-37b53d8d3c9b", "rel": "bookmark"}]}, {"uuid": "cccdd1fb-1358-4814-8c70-f41fdd8465bd", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/cccdd1fb-1358-4814-8c70-f41fdd8465bd", "rel": "self"}, {"href": "http://localhost/volume/targets/cccdd1fb-1358-4814-8c70-f41fdd8465bd", "rel": "bookmark"}]}], "next": "http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=uuid,extra&limit=3&marker=cccdd1fb-1358-4814-8c70-f41fdd8465bd"} {0} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_one_port [0.072940s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_collection_links_default_limit [0.049581s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-34c4344b-e8d7-4ec1-9c2c-879d8d1a94f1 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": "758ecd22-f82d-4f2b-bb59-2bfaf509ddb9", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/758ecd22-f82d-4f2b-bb59-2bfaf509ddb9", "rel": "self"}, {"href": "http://localhost/volume/targets/758ecd22-f82d-4f2b-bb59-2bfaf509ddb9", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "d9075142-a5b6-4bb5-b64e-d1f6f416d25c", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/d9075142-a5b6-4bb5-b64e-d1f6f416d25c", "rel": "self"}, {"href": "http://localhost/volume/targets/d9075142-a5b6-4bb5-b64e-d1f6f416d25c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "a6930073-8930-40f4-8804-21c993dcff1c", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/a6930073-8930-40f4-8804-21c993dcff1c", "rel": "self"}, {"href": "http://localhost/volume/targets/a6930073-8930-40f4-8804-21c993dcff1c", "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=a6930073-8930-40f4-8804-21c993dcff1c"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_description_oversize [0.097135s] ... 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-21f1f276-1742-4281-9373-6200c48b62fa X-Openstack-Ironic-Api-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.common.test_network.GetPhysnetsByPortgroupID.test_two_ports [0.054392s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_port.TestPost.test_node_uuid_to_node_id_mapping [0.109045s] ... 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-2977b23f-7ac2-416d-8793-4111559fbe70 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": "2026-04-12T07:47:10.741466+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_volume_target.TestListVolumeTargets.test_collection_links_detail [0.081207s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?detail=True&limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3aca7153-70b6-489c-9672-33f5ffed430d 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": "4134f90d-b49f-4af8-8129-9e1f77daba53", "created_at": "2026-04-12T07:47:10.773111+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/4134f90d-b49f-4af8-8129-9e1f77daba53", "rel": "self"}, {"href": "http://localhost/volume/targets/4134f90d-b49f-4af8-8129-9e1f77daba53", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "336dd1bb-7847-4179-99c2-c94fd7a6e9a2", "created_at": "2026-04-12T07:47:10.774030+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/336dd1bb-7847-4179-99c2-c94fd7a6e9a2", "rel": "self"}, {"href": "http://localhost/volume/targets/336dd1bb-7847-4179-99c2-c94fd7a6e9a2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "cce8a81f-39a5-4a9e-9374-c74f2ca6a10a", "created_at": "2026-04-12T07:47:10.774786+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/cce8a81f-39a5-4a9e-9374-c74f2ca6a10a", "rel": "self"}, {"href": "http://localhost/volume/targets/cce8a81f-39a5-4a9e-9374-c74f2ca6a10a", "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=cce8a81f-39a5-4a9e-9374-c74f2ca6a10a"} {0} ironic.tests.unit.common.test_network.GetPhysnetsByPortgroupID.test_two_ports_inconsistent [0.085664s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_doesnt_contain_id [0.120659s] ... 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-33dcb23d-3b93-4347-8d67-1e2ecdcacc37 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": "2026-04-12T07:47:10.834781+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-0a839dc1-c296-4178-9b45-2c4fb2097814 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": "2026-04-12T07:47:10.834781+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail [0.060987s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dca453ce-0ec6-4a9c-9d58-715a38af3709 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": "2026-04-12T07:47:10.865057+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_port.TestPost.test_portgroups_subresource_post [0.133871s] ... 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-a7567a25-77dc-4463-bad6-bcf7fc7e22bc 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.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_excludes_None [0.063791s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_against_single [0.040299s] ... 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-c9aeedb6-a604-438e-8634-087b83c13a64 X-Openstack-Ironic-Api-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_ramdisk.TestContinueInspection.test_bmc_address_as_none [0.044088s] ... 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-a88521be-346b-4d54-9eb1-c2b39799a3da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "e6a6454e-e17b-4247-9a59-0d1bd8a62a68"} {0} ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_multiple_ports [0.048635s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_default_conductor_group [0.099987s] ... 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-13aaf5d6-86e0-40aa-ae3f-dbfb63323d3e 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": "2026-04-12T07:47:10.935580+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-f744c09f-7e5a-4f77-a032-532c6ddf55a6 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": "2026-04-12T07:47:10.935580+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"}]} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_and_fields [0.056441s] ... 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-9ad92d45-6e9a-4a2f-8d45-f6bf38fdc9bc X-Openstack-Ironic-Api-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_ramdisk.TestContinueInspection.test_inspector_compatibility [0.047009s] ... 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-77f58806-694b-4b9e-bc09-8b1dc0a1e29e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "b7b87900-9b82-4540-9a84-a3779fba000d"} {0} ironic.tests.unit.common.test_network.GetPhysnetsForNodeTestCase.test_get_physnets_for_node_no_ports [0.050701s] ... ok {0} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_duplicate [0.021302s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_invalid_schema [0.049182s] ... 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-3e484a36-8d53-460f-b2c0-a516f80d7706 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_failure [0.019990s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_by_node_name_ok [0.065982s] ... 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-f5338651-5c38-49fe-863f-9c100086f145 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": "2026-04-12T07:47:11.028370+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"}]} {0} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_missing [0.027663s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_new_api [0.046500s] ... 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-c4a527c0-9131-462b-8241-b9338af04fe0 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": "81c6c9ba-c13c-4eb8-af77-6b3c88a402f0", "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/81c6c9ba-c13c-4eb8-af77-6b3c88a402f0", "rel": "self"}, {"href": "http://localhost/nodes/81c6c9ba-c13c-4eb8-af77-6b3c88a402f0", "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"]}} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_network_interface [0.132102s] ... 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-e57d010d-577d-4cb0-a853-d13bc8f36f8b 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-2e183be2-3549-40f7-9a5c-1cfa51d3335c 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"}]} {0} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_name [0.024409s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_false [0.065944s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-65db5a18-fdc3-457c-bb70-7381a20ee806 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"}]} {0} ironic.tests.unit.common.test_neutron.TestGetNetworkByUUIDOrName.test__get_network_by_uuid_or_name_uuid [0.020122s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_no_usable_lookup_data [0.049299s] ... 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-d9305596-a7c8-4586-ad30-e5ef9fb0d588 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_invalid_api_version [0.042042s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestContinueInspection.test_old_api_version [0.044934s] ... 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-07a0ec93-4aca-4a8b-8660-006b0ee9bc52 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_detail_sepecified_by_path [0.036741s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/detail WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-62b59d50-5732-4c63-8bfb-e7eade574f2f X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_bad_invalid_agent_status [0.040552s] ... 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-ac49a286-16e3-46db-b6c2-9eff5754c236 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_empty [0.033433s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-436fa3ff-9e2b-4a33-9415-b5a08c92f670 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.api.controllers.v1.test_node.TestPost.test_create_node_explicit_resource_class [0.152126s] ... 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-9e9e4597-57ef-4244-8ddf-d65cb7005019 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": "2026-04-12T07:47:11.221250+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-e50de562-03da-4b26-851d-a11722274a3f 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": "2026-04-12T07:47:11.221250+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_heartbeat_rejects_different_callback_url [0.032843s] ... 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-3f059449-0bc9-42e8-bf56-53f12a5e2d8d X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_heartbeat_rejects_file_url [0.040928s] ... 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-d74cdc17-a6fb-465c-b6e3-89577a738aec X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_all_by_node_name_ok [0.069428s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-45ff0fdd-02fa-479a-ae1c-e43d006d2d8a 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": "795b1a9b-6c69-441f-8024-eb27dacb9b80", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/795b1a9b-6c69-441f-8024-eb27dacb9b80", "rel": "self"}, {"href": "http://localhost/volume/targets/795b1a9b-6c69-441f-8024-eb27dacb9b80", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "e41d2b9a-b3b7-49ab-85d4-c0c89dd76be9", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/e41d2b9a-b3b7-49ab-85d4-c0c89dd76be9", "rel": "self"}, {"href": "http://localhost/volume/targets/e41d2b9a-b3b7-49ab-85d4-c0c89dd76be9", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "0a93f5d7-0b8f-4ecb-970e-ace589c32059", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/0a93f5d7-0b8f-4ecb-970e-ace589c32059", "rel": "self"}, {"href": "http://localhost/volume/targets/0a93f5d7-0b8f-4ecb-970e-ace589c32059", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_node_not_found [0.043554s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/faa25d4f-1eb7-487e-9f39-3790a93daa93 WITH {'callback_url': 'https://url'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6be30463-bf6c-4aab-b166-c6486c94e0dc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node faa25d4f-1eb7-487e-9f39-3790a93daa93 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok [0.039893s] ... 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-8c906890-d302-46b2-96fa-629be3f1e50e 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_volume_target.TestListVolumeTargets.test_get_collection_custom_fields [0.098061s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e6406f7-9274-49c0-a760-1b7069c24418 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": "e7cee1fc-f165-4a79-a4f2-5ab2bd021b8a", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/e7cee1fc-f165-4a79-a4f2-5ab2bd021b8a", "rel": "self"}, {"href": "http://localhost/volume/targets/e7cee1fc-f165-4a79-a4f2-5ab2bd021b8a", "rel": "bookmark"}]}, {"uuid": "65544637-1891-4c32-82c4-086d91170210", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/65544637-1891-4c32-82c4-086d91170210", "rel": "self"}, {"href": "http://localhost/volume/targets/65544637-1891-4c32-82c4-086d91170210", "rel": "bookmark"}]}, {"uuid": "a33dae11-ad95-4541-ac69-4734a2a1f4cf", "extra": {}, "links": [{"href": "http://localhost/v1/volume/targets/a33dae11-ad95-4541-ac69-4734a2a1f4cf", "rel": "self"}, {"href": "http://localhost/volume/targets/a33dae11-ad95-4541-ac69-4734a2a1f4cf", "rel": "bookmark"}]}]} {0} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipa_debug_rescue [0.292178s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_status_and_status [0.038489s] ... 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-4e256a22-b7a9-42d1-a060-c665966caa65 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_volume_target.TestListVolumeTargets.test_get_collection_pagination_no_uuid [0.060415s] ... 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-602c17a9-b974-4c4d-9066-e241d7be567c 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/77abcfd7-cfae-4e05-898e-fad87ce0b9f2", "rel": "self"}, {"href": "http://localhost/volume/targets/77abcfd7-cfae-4e05-898e-fad87ce0b9f2", "rel": "bookmark"}]}, {"boot_index": 1, "links": [{"href": "http://localhost/v1/volume/targets/e26fba4f-d5b2-4ae3-9850-04d5d3e385e4", "rel": "self"}, {"href": "http://localhost/volume/targets/e26fba4f-d5b2-4ae3-9850-04d5d3e385e4", "rel": "bookmark"}]}], "next": "http://localhost/v1/volume/targets?sort_key=id&sort_dir=asc&fields=boot_index&limit=2&marker=e26fba4f-d5b2-4ae3-9850-04d5d3e385e4"} {0} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_driver_info [0.053733s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_explicit_storage_interface [0.232540s] ... 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-c11d3d57-99a4-4e01-b898-f345e93e4dd0 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-a01f0aec-305a-4379-9504-babbb52adf3d 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"}]} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_token [0.072812s] ... 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-eaab67a8-1c12-4e1b-844b-c3c80053b3fd 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_volume_target.TestListVolumeTargets.test_get_custom_fields_invalid_fields [0.056715s] ... 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-c0730296-2c6e-42cd-8b72-84333fd29a43 X-Openstack-Ironic-Api-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.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_from_instance_info [0.050551s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_agent_verify_ca [0.043126s] ... 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-ae625a12-5a95-446f-ab3b-f42a2e90baf4 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_volume_target.TestListVolumeTargets.test_get_one [0.060756s] ... 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-1feb4eff-f6a3-498a-a3ab-b5672935a035 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": "2026-04-12T07:47:11.555093+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_ramdisk.TestHeartbeat.test_ok_agent_version [0.050836s] ... 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-65ea821e-4db9-47ff-aba6-ba60b0f277cb 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.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_kernel_params_with_default [0.065139s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_fails_on_disabled_bios_boot_mode [0.117200s] ... 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-4fdb378f-45ac-44a4-ae51-ecfa2ed0d4eb 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_get_one_custom_fields [0.055268s] ... 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-b0500263-b61b-49d6-996a-7682c73f6a37 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"}]} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_by_name [0.046942s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/test.1 WITH {'callback_url': 'https://url', 'agent_token': 'token'} GOT Response: 202 Accepted Openstack-Request-Id: req-8d0ec91f-e25d-4ac3-a36a-3b1ed1c79236 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.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe [0.060064s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_for_anaconda [0.034738s] ... 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-5bc5cd96-177b-4642-bc2d-e258efb676e0 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_volume_target.TestListVolumeTargets.test_get_one_invalid_api_version [0.036627s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_ok_with_json [0.035454s] ... 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-bc2ad332-f1f6-4f06-a5dc-3e4804831041 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {0} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_ipa_debug [0.062795s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_fails_on_disabled_uefi_boot_mode [0.124431s] ... 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-68ebca37-ddb3-415a-af6b-8eb17247877d 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_ramdisk.TestHeartbeat.test_old_API_agent_verify_ca_error [0.042234s] ... 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-b0312bf4-34ca-4dfe-b3e6-27f0ab0fb2e6 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.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_local_boot [0.066950s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_API_agent_version_error [0.037677s] ... 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-a82b28ad-54d4-4280-8c6f-466ae8e11537 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.TestPost.test_create_node_fails_on_invalid_boot_mode [0.078705s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_agent_status_error [0.031514s] ... 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-113acb43-1ba4-4d4e-93be-98ab4966a410 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.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_no_kernel_no_ramdisk [0.041951s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_links [0.175279s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/2ce371b5-9c01-41fe-b7fa-76bf9122113b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4c649bce-fad8-42d8-a26a-e34a7ad751bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2ce371b5-9c01-41fe-b7fa-76bf9122113b", "created_at": "2026-04-12T07:47:11.745148+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/2ce371b5-9c01-41fe-b7fa-76bf9122113b", "rel": "self"}, {"href": "http://localhost/volume/targets/2ce371b5-9c01-41fe-b7fa-76bf9122113b", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/targets/2ce371b5-9c01-41fe-b7fa-76bf9122113b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd5d21a6-ec75-459c-8a15-ca6e22da47c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2ce371b5-9c01-41fe-b7fa-76bf9122113b", "created_at": "2026-04-12T07:47:11.745148+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/2ce371b5-9c01-41fe-b7fa-76bf9122113b", "rel": "self"}, {"href": "http://localhost/volume/targets/2ce371b5-9c01-41fe-b7fa-76bf9122113b", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /volume/targets/2ce371b5-9c01-41fe-b7fa-76bf9122113b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6128e293-f479-4257-9a8d-2d6a0ade1e06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2ce371b5-9c01-41fe-b7fa-76bf9122113b", "created_at": "2026-04-12T07:47:11.745148+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/2ce371b5-9c01-41fe-b7fa-76bf9122113b", "rel": "self"}, {"href": "http://localhost/volume/targets/2ce371b5-9c01-41fe-b7fa-76bf9122113b", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestHeartbeat.test_old_api_version [0.037467s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/heartbeat/ff4a2608-73bc-4502-9970-5bc1dd6c2bed WITH {'callback_url': 'https://url'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1f1cbe61-6e16-4220-8e11-12b8bdb7a07b 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.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_opts_ramdisk_opt [0.068442s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_many [0.062966s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-12bd9322-b220-4aae-a4db-f12189b29c30 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": "7f8d3987-aa93-4363-99ec-b4f31ebe50b9", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/7f8d3987-aa93-4363-99ec-b4f31ebe50b9", "rel": "self"}, {"href": "http://localhost/volume/targets/7f8d3987-aa93-4363-99ec-b4f31ebe50b9", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "585c3ac0-a191-4edb-bd6d-eb98f93c2573", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/585c3ac0-a191-4edb-bd6d-eb98f93c2573", "rel": "self"}, {"href": "http://localhost/volume/targets/585c3ac0-a191-4edb-bd6d-eb98f93c2573", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "611484b6-26e3-47b1-b84f-84006398267a", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/611484b6-26e3-47b1-b84f-84006398267a", "rel": "self"}, {"href": "http://localhost/volume/targets/611484b6-26e3-47b1-b84f-84006398267a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "26f2b21c-4dbe-413f-b160-605a0327316d", "boot_index": 3, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/26f2b21c-4dbe-413f-b160-605a0327316d", "rel": "self"}, {"href": "http://localhost/volume/targets/26f2b21c-4dbe-413f-b160-605a0327316d", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "b0340e68-a7f1-4a69-9c87-049406aaf619", "boot_index": 4, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/b0340e68-a7f1-4a69-9c87-049406aaf619", "rel": "self"}, {"href": "http://localhost/volume/targets/b0340e68-a7f1-4a69-9c87-049406aaf619", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_fast_deploy_lookup [0.061861s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=f6b494d4-2131-4963-8f37-d46829cb3e44 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-110a787c-e3a6-42a7-8052-3e7baf205c0c 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": "f6b494d4-2131-4963-8f37-d46829cb3e44", "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/f6b494d4-2131-4963-8f37-d46829cb3e44", "rel": "self"}, {"href": "http://localhost/nodes/f6b494d4-2131-4963-8f37-d46829cb3e44", "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=f6b494d4-2131-4963-8f37-d46829cb3e44 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-69c775a6-9cd6-41f3-9a10-73b166080038 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": "f6b494d4-2131-4963-8f37-d46829cb3e44", "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/f6b494d4-2131-4963-8f37-d46829cb3e44", "rel": "self"}, {"href": "http://localhost/nodes/f6b494d4-2131-4963-8f37-d46829cb3e44", "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=f6b494d4-2131-4963-8f37-d46829cb3e44 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2eb639a0-3568-4aa6-8ab3-ba76273d7523 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": "f6b494d4-2131-4963-8f37-d46829cb3e44", "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/f6b494d4-2131-4963-8f37-d46829cb3e44", "rel": "self"}, {"href": "http://localhost/nodes/f6b494d4-2131-4963-8f37-d46829cb3e44", "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"]}} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_bios_interface [0.145751s] ... 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-6439d94f-068a-402e-a2ee-127677900b54 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one [0.047482s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-97238a5a-b62e-401b-b115-5797cd1a5628 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_ramdisk.TestLookup.test_found_by_addresses [0.054955s] ... 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-bf752cfc-ca84-4826-ada1-988c9f5ca30b 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": "5f1998c6-4142-4c29-8368-6f2f75415345", "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/5f1998c6-4142-4c29-8368-6f2f75415345", "rel": "self"}, {"href": "http://localhost/nodes/5f1998c6-4142-4c29-8368-6f2f75415345", "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"]}} {0} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_rescue [0.091537s] ... ok {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_one_invalid_api_version [0.046761s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_only_uuid [0.066325s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?node_uuid=39990dbb-8b2f-4928-9547-d9ff3069774c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c9a4e89c-7653-4ebb-91b2-883f2145fbf5 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": "39990dbb-8b2f-4928-9547-d9ff3069774c", "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/39990dbb-8b2f-4928-9547-d9ff3069774c", "rel": "self"}, {"href": "http://localhost/nodes/39990dbb-8b2f-4928-9547-d9ff3069774c", "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.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key [0.052819s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-555b2104-538d-45e5-8054-7a776608e089 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": "3c0902a5-640f-4f5c-aa17-a4e85653a631", "boot_index": 1, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/3c0902a5-640f-4f5c-aa17-a4e85653a631", "rel": "self"}, {"href": "http://localhost/volume/targets/3c0902a5-640f-4f5c-aa17-a4e85653a631", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "476cd2a8-7714-4f59-95e3-e745898c0112", "boot_index": 2, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/476cd2a8-7714-4f59-95e3-e745898c0112", "rel": "self"}, {"href": "http://localhost/volume/targets/476cd2a8-7714-4f59-95e3-e745898c0112", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}, {"uuid": "e86d5b3a-8973-4cfc-a30a-8cc0117ff62c", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/e86d5b3a-8973-4cfc-a30a-8cc0117ff62c", "rel": "self"}, {"href": "http://localhost/volume/targets/e86d5b3a-8973-4cfc-a30a-8cc0117ff62c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_chassis [0.127741s] ... 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-109b59d9-eda2-4dd5-9368-b1a7342dbf2d 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}"} {1} ironic.tests.unit.api.controllers.v1.test_volume_target.TestListVolumeTargets.test_sort_key_invalid [0.037485s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-62fe4e06-4cd8-449d-8056-bc98601af252 X-Openstack-Ironic-Api-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-d7f4b2eb-3459-4871-a674-25de84c38ac8 X-Openstack-Ironic-Api-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-64bdfafe-2339-45d3-adea-8226bbf25b07 X-Openstack-Ironic-Api-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.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_pxe_without_is_whole_disk_image [0.110371s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_found_by_uuid [0.076372s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=9c74b3ec-5faf-45ff-b20a-8ecc6c9d428b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7017d2f8-afb5-40d8-9e71-22871ca67df5 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": "9c74b3ec-5faf-45ff-b20a-8ecc6c9d428b", "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/9c74b3ec-5faf-45ff-b20a-8ecc6c9d428b", "rel": "self"}, {"href": "http://localhost/nodes/9c74b3ec-5faf-45ff-b20a-8ecc6c9d428b", "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"]}} {0} ironic.tests.unit.common.test_pxe_utils.PXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ramdisk_params [0.052472s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_invalid_driver [0.083148s] ... 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-87562a2f-ef14-48b2-bb5a-0d2c39271ca4 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}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_ignore_malformed_address [0.061036s] ... 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-e49be6e9-1f34-4a24-90e6-d8f5a4dbc719 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": "05f6d66c-0090-4b17-a624-83db9abb0469", "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/05f6d66c-0090-4b17-a624-83db9abb0469", "rel": "self"}, {"href": "http://localhost/nodes/05f6d66c-0090-4b17-a624-83db9abb0469", "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"]}} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_001_values ... SKIPPED: These are fake reference values for YAML templating {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_invalid_input_addresses [0.055068s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=meow1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-443d067a-3267-41b3-a6a9-c624216c7fe4 X-Openstack-Ironic-Api-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.controllers.v1.test_node.TestPost.test_create_node_invalid_network_interface [0.085920s] ... 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-254196c7-042b-4229-a309-ff51e4c5db7f X-Openstack-Ironic-Api-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_ramdisk.TestLookup.test_invalid_input_node_uuid [0.036522s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?node_uuid=meow1 WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-847e8563-106b-4ca1-a3bb-64735b975bb6 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_ramdisk.TestLookup.test_no_restrict_lookup [0.042254s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=60c2c4ef-985f-4b15-a5ee-b045b0c4ec0d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-508daf2c-4d66-4625-919f-042dd5fea734 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": "60c2c4ef-985f-4b15-a5ee-b045b0c4ec0d", "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/60c2c4ef-985f-4b15-a5ee-b045b0c4ec0d", "rel": "self"}, {"href": "http://localhost/nodes/60c2c4ef-985f-4b15-a5ee-b045b0c4ec0d", "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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_002_nodes_post_admin [0.148523s] ... 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-f0fa2dd3-466e-49e4-8b20-b943248c7d57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_node.TestPost.test_create_node_invalid_storage_interface [0.123707s] ... 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-e5a4359d-c9ea-4f1f-8d98-798cc0c9a216 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee [0.095648s] ... 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-55e94d4a-e073-4e62-92a6-6b91ca33bff4 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": "2026-04-12T07:47:12.458099+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-ac0c16fd-7a8d-46e1-b17e-a1a8a5655083 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": "2026-04-12T07:47:12.458099+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"}]} {0} ironic.tests.unit.common.test_swift.SwiftTestCase.test___init__ [0.395675s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_lessee_old_api_version [0.091641s] ... 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-b99c176c-4ddf-4bf4-a35f-cd29ee286f11 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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_003_nodes_post_member [0.200619s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-123204b3-76c4-4572-9add-3ef4cbca7a10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_ramdisk.TestLookup.test_not_found [0.351511s] ... 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-9f8dcb95-f6dd-4e77-9870-314c3475307f X-Openstack-Ironic-Api-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.TestPost.test_create_node_name_empty_invalid [0.112408s] ... 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-8656b1fd-4a77-4dba-97cc-8223f6fb3fdf 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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_004_nodes_post_observer [0.123804s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5de59df7-69b9-4cb4-86a6-2e0267afe0e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_ramdisk.TestLookup.test_nothing_provided [0.065306s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-ca7ddd42-e50b-4393-beda-7089860408ec X-Openstack-Ironic-Api-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.controllers.v1.test_node.TestPost.test_create_node_name_empty_not_acceptable [0.076878s] ... 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-48430727-f28e-41b9-b642-307efae51472 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_ramdisk.TestLookup.test_old_api_version [0.064108s] ... 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-768e7637-dc29-44b1-a657-830b1013396e 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_005_nodes_get_node_admin [0.114058s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d5ab9ad9-ba2a-43ed-9dec-fb0d9d8fc0ba 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": "2026-04-12T07:47:12.743823+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_ramdisk.TestLookup.test_restrict_lookup [0.064501s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/lookup?addresses=11:22:33:44:55:66,66:55:44:33:22:11&node_uuid=1bc496a0-d3e9-490e-8f08-87f0deb4e1c8 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e8c5ece8-ae76-4ac8-8a93-815aa0b7cd2b X-Openstack-Ironic-Api-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.TestPost.test_create_node_network_interface [0.147189s] ... 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-8a3f7097-5b48-4c52-a71a-e6ae6559414e 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": "2026-04-12T07:47:12.873217+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-ebb7f6a2-dcdc-4c4e-9de4-0b9290296c01 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": "2026-04-12T07:47:12.873217+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"}]} {0} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object [0.371638s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_006_nodes_get_node_member [0.112473s] ... 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-a5ff0896-fa2f-468d-941f-65a66d9d8887 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_runbook.TestDelete.test_delete_by_name [0.077083s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/CUSTOM_DT1 GOT Response: 204 No Content Openstack-Request-Id: req-ece1bbe7-8aed-46ad-9586-3cfed0baebb7 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_runbook.TestDelete.test_delete_by_name_non_existent [0.033994s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/blah GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-47525274-e4bc-478f-a128-a9daf21283ab X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_007_nodes_get_node_observer [0.080327s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ec528139-9967-49db-9ac6-5bc4f5b9a9a4 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": "2026-04-12T07:47:12.955221+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_runbook.TestDelete.test_delete_by_uuid [0.042626s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/1f4f00e1-88aa-441b-a3fc-4e0b02609263 GOT Response: 204 No Content Openstack-Request-Id: req-2d44b08a-b7dd-41e1-b354-c308558853de 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.TestPost.test_create_node_network_interface_old_api_version [0.108585s] ... 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-30f6da32-17d8-46f8-9589-7730fdf5f72b 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_runbook.TestDelete.test_delete_invalid_api_version [0.058585s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/a884868b-3538-4dd6-a4f3-12e5f30368c7 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_008_nodes_get_node_other_admin [0.086073s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4e1858ab-281b-4333-94f0-e1a2d155527f 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": "2026-04-12T07:47:13.044944+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_runbook.TestDelete.test_delete_old_api_version [0.030823s] ... 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_node.TestPost.test_create_node_no_chassis_uuid [0.092614s] ... 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-c5ff0ada-f2ab-43b7-8fff-72b08c053533 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": "2026-04-12T07:47:13.106987+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_collection_links [0.042003s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-54913336-b58c-4de9-9f8e-51917747c948 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": "002cada2-6161-491a-8e70-f5d500d52f43", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/002cada2-6161-491a-8e70-f5d500d52f43", "rel": "self"}, {"href": "http://localhost/runbooks/002cada2-6161-491a-8e70-f5d500d52f43", "rel": "bookmark"}]}, {"uuid": "37ed7da4-2e4b-4b94-8ac2-b87d289442fa", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/37ed7da4-2e4b-4b94-8ac2-b87d289442fa", "rel": "self"}, {"href": "http://localhost/runbooks/37ed7da4-2e4b-4b94-8ac2-b87d289442fa", "rel": "bookmark"}]}, {"uuid": "e52277e3-da45-432d-b561-68f2ac62b71b", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/e52277e3-da45-432d-b561-68f2ac62b71b", "rel": "self"}, {"href": "http://localhost/runbooks/e52277e3-da45-432d-b561-68f2ac62b71b", "rel": "bookmark"}]}], "next": "http://localhost/v1/runbooks?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=e52277e3-da45-432d-b561-68f2ac62b71b"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_collection_links_custom_fields [0.047529s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?fields=uuid,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a134a0ec-26a7-4e82-9238-a2d5af1eb4cf 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": "a1da8337-3134-47a3-b388-1418b15db60e", "links": [{"href": "http://localhost/v1/runbooks/a1da8337-3134-47a3-b388-1418b15db60e", "rel": "self"}, {"href": "http://localhost/runbooks/a1da8337-3134-47a3-b388-1418b15db60e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "35a09788-a9ff-4c88-af0b-da50967b3fe6", "links": [{"href": "http://localhost/v1/runbooks/35a09788-a9ff-4c88-af0b-da50967b3fe6", "rel": "self"}, {"href": "http://localhost/runbooks/35a09788-a9ff-4c88-af0b-da50967b3fe6", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "248fea50-664d-4e1a-9a29-5f4e02ec38eb", "links": [{"href": "http://localhost/v1/runbooks/248fea50-664d-4e1a-9a29-5f4e02ec38eb", "rel": "self"}, {"href": "http://localhost/runbooks/248fea50-664d-4e1a-9a29-5f4e02ec38eb", "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=248fea50-664d-4e1a-9a29-5f4e02ec38eb"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_default_resource_class [0.100583s] ... 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-3c8c2f01-d91a-48fd-89aa-cdb690fcc32c 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": "2026-04-12T07:47:13.190942+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-f6a05603-bd37-473e-bae5-c3522ca13c64 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": "2026-04-12T07:47:13.190942+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_collection_links_default_limit [0.054499s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-115e76ca-9bc6-4cb0-b919-4f9c1a4f95a7 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": "b386a0a0-d574-4c53-a3aa-28caa811b12d", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/b386a0a0-d574-4c53-a3aa-28caa811b12d", "rel": "self"}, {"href": "http://localhost/runbooks/b386a0a0-d574-4c53-a3aa-28caa811b12d", "rel": "bookmark"}]}, {"uuid": "82c0afe7-0932-4456-b277-a6e1c5d6ad8c", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/82c0afe7-0932-4456-b277-a6e1c5d6ad8c", "rel": "self"}, {"href": "http://localhost/runbooks/82c0afe7-0932-4456-b277-a6e1c5d6ad8c", "rel": "bookmark"}]}, {"uuid": "7cfa8278-e11a-4081-97e5-f5cdb0e1cfaa", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/7cfa8278-e11a-4081-97e5-f5cdb0e1cfaa", "rel": "self"}, {"href": "http://localhost/runbooks/7cfa8278-e11a-4081-97e5-f5cdb0e1cfaa", "rel": "bookmark"}]}], "next": "http://localhost/v1/runbooks?sort_key=id&sort_dir=asc&fields=uuid,name&limit=3&marker=7cfa8278-e11a-4081-97e5-f5cdb0e1cfaa"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_query [0.031431s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ed569b19-29ec-45fa-81c8-7850d87d8a7b 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": "e9f57b94-2583-4d88-9e4b-a68060e8630f", "created_at": "2026-04-12T07:47:13.277179+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/e9f57b94-2583-4d88-9e4b-a68060e8630f", "rel": "self"}, {"href": "http://localhost/runbooks/e9f57b94-2583-4d88-9e4b-a68060e8630f", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_no_mandatory_field_driver [0.065218s] ... 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-87117e5a-a6e3-4cc0-a065-785b791322fd 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}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_query_false [0.062227s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b49b59a5-750f-47d2-ad9b-e0f8100bbbb9 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": "4183b714-813f-4c04-ae60-ef28da9cf315", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/4183b714-813f-4c04-ae60-ef28da9cf315", "rel": "self"}, {"href": "http://localhost/runbooks/4183b714-813f-4c04-ae60-ef28da9cf315", "rel": "bookmark"}]}]} GET /v1/runbooks?detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-89077e28-7b07-4066-b593-1b836a867e05 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": "4183b714-813f-4c04-ae60-ef28da9cf315", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/4183b714-813f-4c04-ae60-ef28da9cf315", "rel": "self"}, {"href": "http://localhost/runbooks/4183b714-813f-4c04-ae60-ef28da9cf315", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_009_nodes_get_admin [0.299788s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1c21b7cf-6cbd-4bda-ac17-d0b651b5df52 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": "8b1ef506-d85b-4b90-aa33-b3db8792d17f", "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"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_sort_key_allowed [0.060997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?sort_key=name&detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1cfafbb2-ed38-4668-bdef-73f94cf75823 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": "936fa2ed-ce6a-4d2c-b9e2-87481a64b916", "created_at": "2026-04-12T07:47:13.390837+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/936fa2ed-ce6a-4d2c-b9e2-87481a64b916", "rel": "self"}, {"href": "http://localhost/runbooks/936fa2ed-ce6a-4d2c-b9e2-87481a64b916", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "6c65640d-3d72-44e8-92ad-19ea399e76a2", "created_at": "2026-04-12T07:47:13.389334+00:00", "updated_at": null, "name": "CUSTOM_DT2", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/6c65640d-3d72-44e8-92ad-19ea399e76a2", "rel": "self"}, {"href": "http://localhost/runbooks/6c65640d-3d72-44e8-92ad-19ea399e76a2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "7f0de0d8-4a47-4ae9-8268-8d7594b3cf72", "created_at": "2026-04-12T07:47:13.387593+00:00", "updated_at": null, "name": "CUSTOM_DT3", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/7f0de0d8-4a47-4ae9-8268-8d7594b3cf72", "rel": "self"}, {"href": "http://localhost/runbooks/7f0de0d8-4a47-4ae9-8268-8d7594b3cf72", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner [0.149265s] ... 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-7260c195-8275-4a95-baac-ced4266aa080 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": "2026-04-12T07:47:13.430896+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-c54c6e5f-bf23-495f-a0c1-a0d2253bc6f4 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": "2026-04-12T07:47:13.430896+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"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_010_nodes_get_other_admin [0.079419s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93ffb76e-2b52-4301-abc4-e2600330a54e 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": "0820f22e-e6b4-4c68-ab7b-5848c3de4241", "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.controllers.v1.test_node.TestPost.test_create_node_owner_old_api_version [0.063172s] ... 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-c5a57708-0b5c-4a20-89ac-7dc2ded7d471 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_runbook.TestListRunbooks.test_detail_using_query_and_fields [0.099390s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-c25f267e-bf0e-4ee7-9ae3-71131ead2ade X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_detail_using_query_false_and_fields [0.047486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?detail=False&fields=steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-79346cd8-cd30-48d6-a793-fc68ac37114a 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/a4dc2139-42bf-4ebc-b892-3c77996b3b86", "rel": "self"}, {"href": "http://localhost/runbooks/a4dc2139-42bf-4ebc-b892-3c77996b3b86", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}]} {0} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_create_container_fails [0.642673s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_011_nodes_detail_get_admin [0.097530s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a1f82724-8655-43ea-ba6b-1822694e830a 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": "2026-04-12T07:47:13.519090+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": "2026-04-12T07:47:13.520486+00:00", "updated_at": "2026-04-12T07:47:13.524660+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": "99029f1a-929f-44f6-87aa-a32aee07ab1f", "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": "99029f1a-929f-44f6-87aa-a32aee07ab1f", "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": "2026-04-12T07:47:13.540195+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"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_recorded_project_scope [0.095549s] ... 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-27977ce4-ad95-43ff-810b-01ea70c47c09 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": "2026-04-12T07:47:13.586242+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-59413156-44b7-4b42-8751-af21827a2e55 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": "2026-04-12T07:47:13.586242+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_empty [0.064719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-87f586b0-337d-4e54-b011-49ba6c5e149e 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.api.controllers.v1.test_runbook.TestListRunbooks.test_get_all_invalid_api_version [0.032899s] ... 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_012_nodes_detail_get_member [0.089396s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-93edb715-123a-4642-a209-1dfdfdfa507a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.controllers.v1.test_runbook.TestListRunbooks.test_get_collection_custom_fields [0.044798s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?fields=uuid,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a76afc01-6734-4ce9-9d5c-66b2f8d8faa5 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": "f095a573-be93-49a4-8cbe-a0a897e126f1", "links": [{"href": "http://localhost/v1/runbooks/f095a573-be93-49a4-8cbe-a0a897e126f1", "rel": "self"}, {"href": "http://localhost/runbooks/f095a573-be93-49a4-8cbe-a0a897e126f1", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "bb3b45f0-9069-4652-b443-de2ea90ae05a", "links": [{"href": "http://localhost/v1/runbooks/bb3b45f0-9069-4652-b443-de2ea90ae05a", "rel": "self"}, {"href": "http://localhost/runbooks/bb3b45f0-9069-4652-b443-de2ea90ae05a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}, {"uuid": "77bb1096-d56c-4732-9f90-32c0679a52dd", "links": [{"href": "http://localhost/v1/runbooks/77bb1096-d56c-4732-9f90-32c0679a52dd", "rel": "self"}, {"href": "http://localhost/runbooks/77bb1096-d56c-4732-9f90-32c0679a52dd", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_owner_system_scope [0.109561s] ... 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-1e9ddfbd-b39a-480c-8314-accbad1287c5 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": "2026-04-12T07:47:13.682361+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-77b254f1-79bd-4e54-a500-765eac855a85 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": "2026-04-12T07:47:13.682361+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_runbook.TestListRunbooks.test_get_collection_pagination_no_uuid [0.061106s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?fields=name&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-59727fc9-a6d0-4962-988c-e6cac3b528bd 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/1862cb08-42d3-4cf0-9372-31c2c88dee10", "rel": "self"}, {"href": "http://localhost/runbooks/1862cb08-42d3-4cf0-9372-31c2c88dee10", "rel": "bookmark"}]}, {"name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/03c0378b-b926-4e67-b5dd-4bb92902510f", "rel": "self"}, {"href": "http://localhost/runbooks/03c0378b-b926-4e67-b5dd-4bb92902510f", "rel": "bookmark"}]}], "next": "http://localhost/v1/runbooks?sort_key=id&sort_dir=asc&fields=name&limit=2&marker=03c0378b-b926-4e67-b5dd-4bb92902510f"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_013_nodes_detail_get_observer [0.109842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e9b67fe-4b82-461d-bd15-75c65df74c86 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": "2026-04-12T07:47:13.715124+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": "2026-04-12T07:47:13.716375+00:00", "updated_at": "2026-04-12T07:47:13.720476+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": "8f1e3918-1642-4e3c-b045-967b3502f6ab", "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": "8f1e3918-1642-4e3c-b045-967b3502f6ab", "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": "2026-04-12T07:47:13.745730+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_runbook.TestListRunbooks.test_get_custom_fields_invalid_fields [0.046238s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/0169fc84-a339-4b39-bad0-d0c46cf2a43b?fields=uuid,spongebob WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-47d39c47-ce83-4530-bb51-f813afbdde61 X-Openstack-Ironic-Api-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_runbook.TestListRunbooks.test_get_one [0.048578s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/28fd7dc2-4e4b-4ea4-a8d3-fdb00a140bd6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6db3d83d-a826-484e-b764-d47374672e00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "28fd7dc2-4e4b-4ea4-a8d3-fdb00a140bd6", "created_at": "2026-04-12T07:47:13.855256+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/28fd7dc2-4e4b-4ea4-a8d3-fdb00a140bd6", "rel": "self"}, {"href": "http://localhost/runbooks/28fd7dc2-4e4b-4ea4-a8d3-fdb00a140bd6", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_014_nodes_node_ident_get_admin [0.118193s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b0b82adb-9f4e-4127-ac29-719ca3624e0a 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": "2026-04-12T07:47:13.813440+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_runbook.TestListRunbooks.test_get_one_custom_fields [0.049748s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/399a066b-50e2-474f-beb0-9bc478ebac93?fields=name,steps WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ed8dee2e-3d5a-47f1-a947-1ed0346adab8 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/399a066b-50e2-474f-beb0-9bc478ebac93", "rel": "self"}, {"href": "http://localhost/runbooks/399a066b-50e2-474f-beb0-9bc478ebac93", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_create_object_fails [0.381512s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_get_one_invalid_api_version [0.041289s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/7c0e7f67-9946-4cc4-b6b9-b6d5180d5ea0 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_015_nodes_node_ident_get_member [0.092856s] ... 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-6aeedcc3-adee-4f32-b564-d1085d466b17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_runbook.TestListRunbooks.test_links [0.045634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-40bb04c3-4941-4040-9e36-d91ab3ae5845 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "created_at": "2026-04-12T07:47:13.980315+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "rel": "self"}, {"href": "http://localhost/runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /v1/runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-29b81d03-5e30-4d0c-b207-ebbf1580291b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "created_at": "2026-04-12T07:47:13.980315+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "rel": "self"}, {"href": "http://localhost/runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} GET /runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-002bd933-72bc-4316-b31a-848a054ea7ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "created_at": "2026-04-12T07:47:13.980315+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "rel": "self"}, {"href": "http://localhost/runbooks/5a360c2d-978e-4650-8fd7-c0e3d6d5bd2a", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_many [0.044492s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-49e3d3c0-7f80-4e49-a7b5-ac481ccd004f 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": "cc28e689-ed8d-4e0b-b390-6bdd2ef9275a", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/cc28e689-ed8d-4e0b-b390-6bdd2ef9275a", "rel": "self"}, {"href": "http://localhost/runbooks/cc28e689-ed8d-4e0b-b390-6bdd2ef9275a", "rel": "bookmark"}]}, {"uuid": "20360abc-9714-4485-b6c3-9679a1a3aed4", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/20360abc-9714-4485-b6c3-9679a1a3aed4", "rel": "self"}, {"href": "http://localhost/runbooks/20360abc-9714-4485-b6c3-9679a1a3aed4", "rel": "bookmark"}]}, {"uuid": "fd504372-7c10-442e-91a4-331c5340f63e", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/fd504372-7c10-442e-91a4-331c5340f63e", "rel": "self"}, {"href": "http://localhost/runbooks/fd504372-7c10-442e-91a4-331c5340f63e", "rel": "bookmark"}]}, {"uuid": "348f5f5b-95f1-4e67-87df-20dad340b45c", "name": "CUSTOM_DT3", "links": [{"href": "http://localhost/v1/runbooks/348f5f5b-95f1-4e67-87df-20dad340b45c", "rel": "self"}, {"href": "http://localhost/runbooks/348f5f5b-95f1-4e67-87df-20dad340b45c", "rel": "bookmark"}]}, {"uuid": "3f99f682-9303-47fd-8336-eabf0de8f47d", "name": "CUSTOM_DT4", "links": [{"href": "http://localhost/v1/runbooks/3f99f682-9303-47fd-8336-eabf0de8f47d", "rel": "self"}, {"href": "http://localhost/runbooks/3f99f682-9303-47fd-8336-eabf0de8f47d", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_one [0.034913s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8390a853-163f-44e1-a580-346c0933602c 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": "6d30f8fe-95ab-4699-b2fc-df7ed173ec53", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/6d30f8fe-95ab-4699-b2fc-df7ed173ec53", "rel": "self"}, {"href": "http://localhost/runbooks/6d30f8fe-95ab-4699-b2fc-df7ed173ec53", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_protected_not_allowed [0.380458s] ... 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-f547fbcc-8b8e-45a6-879a-369c63405b6f 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_runbook.TestListRunbooks.test_sensitive_data_masked [0.046066s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/e3c3948d-5f4c-4c7b-ac83-60848dae3878 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5504e83b-06cf-484b-97f5-46427514dc9a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e3c3948d-5f4c-4c7b-ac83-60848dae3878", "created_at": "2026-04-12T07:47:14.123341+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/e3c3948d-5f4c-4c7b-ac83-60848dae3878", "rel": "self"}, {"href": "http://localhost/runbooks/e3c3948d-5f4c-4c7b-ac83-60848dae3878", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": [], "password": "******"}, "order": 1}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_016_nodes_node_ident_get_observer [0.171674s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7cb40ca0-480d-465b-ae08-c641b5851c93 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": "2026-04-12T07:47:14.030144+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_runbook.TestListRunbooks.test_sort_key [0.056756s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8ad93213-3250-4808-9e31-782982b8f6a2 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": "18301633-05f4-4681-994f-152f178227aa", "name": "CUSTOM_DT0", "links": [{"href": "http://localhost/v1/runbooks/18301633-05f4-4681-994f-152f178227aa", "rel": "self"}, {"href": "http://localhost/runbooks/18301633-05f4-4681-994f-152f178227aa", "rel": "bookmark"}]}, {"uuid": "65d8da82-3090-4c5f-b726-e29fdcf9b1b7", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/65d8da82-3090-4c5f-b726-e29fdcf9b1b7", "rel": "self"}, {"href": "http://localhost/runbooks/65d8da82-3090-4c5f-b726-e29fdcf9b1b7", "rel": "bookmark"}]}, {"uuid": "9b5de2c1-77a9-40a6-8998-4b141f1fa379", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/9b5de2c1-77a9-40a6-8998-4b141f1fa379", "rel": "self"}, {"href": "http://localhost/runbooks/9b5de2c1-77a9-40a6-8998-4b141f1fa379", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_sort_key_allowed [0.042189s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?sort_key=name&detail=False WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-051a48e1-4a27-479a-937e-9cc4b395cdbd 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": "79020268-4f83-4ab3-8cf8-e1f94b07a79a", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/79020268-4f83-4ab3-8cf8-e1f94b07a79a", "rel": "self"}, {"href": "http://localhost/runbooks/79020268-4f83-4ab3-8cf8-e1f94b07a79a", "rel": "bookmark"}]}, {"uuid": "10d71830-126f-46f5-9e79-afb2dea2cba3", "name": "CUSTOM_DT2", "links": [{"href": "http://localhost/v1/runbooks/10d71830-126f-46f5-9e79-afb2dea2cba3", "rel": "self"}, {"href": "http://localhost/runbooks/10d71830-126f-46f5-9e79-afb2dea2cba3", "rel": "bookmark"}]}, {"uuid": "11caa5b0-e9e9-4a1c-8b11-9b9de33488d2", "name": "CUSTOM_DT3", "links": [{"href": "http://localhost/v1/runbooks/11caa5b0-e9e9-4a1c-8b11-9b9de33488d2", "rel": "self"}, {"href": "http://localhost/runbooks/11caa5b0-e9e9-4a1c-8b11-9b9de33488d2", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.controllers.v1.test_runbook.TestListRunbooks.test_sort_key_invalid [0.052892s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks?sort_key=extra WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-bfe0ad1b-6959-42bc-8141-a9c1f57e4835 X-Openstack-Ironic-Api-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-8295d0d8-2601-4dac-a084-a466bd363772 X-Openstack-Ironic-Api-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-a1eccc5c-33b0-43a1-be5c-b9e19c2c9a00 X-Openstack-Ironic-Api-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_utils.TestCheckPortListPolicy.test_check_port_list_policy [0.035939s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_reserved_name [0.232056s] ... 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-2ad141d8-efd3-4950-9fe1-81cda5a71408 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-0211a8d9-097a-400b-a318-662b61d567e2 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-61e8037e-3e59-4095-bc7d-478c93b25610 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-5ee3eec6-a1d1-442e-8322-a599db1e703f 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-df91aaed-4d85-438d-9952-bed6e88ade0f 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-31af0391-7092-4712-9bb7-4a1e8dfe3a40 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}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_forbidden [0.031498s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_017_nodes_node_ident_patch_admin [0.208629s] ... 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-a39c0424-6668-4e25-bd15-934cdf34c38c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestCheckPortListPolicy.test_check_port_list_policy_forbidden_no_project [0.044139s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckPortListPolicy.test_check_port_list_policy_non_admin [0.049691s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_cant_set_only_logical [0.034343s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_018_nodes_node_ident_patch_member [0.117715s] ... 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-46e5f277-dd4e-40ab-9ed6-f78d06de2664 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_node.TestPost.test_create_node_resource_class [0.184436s] ... 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-ccb98429-25ba-483e-9aef-1611ca5795a9 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": "2026-04-12T07:47:14.474061+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-2a95ff1c-1bb5-4ba1-b3ce-b1e399be4878 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": "2026-04-12T07:47:14.474061+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_cant_set_only_physical [0.044871s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_019_nodes_node_ident_patch_observer [0.121945s] ... 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-97178622-8e33-4ec6-81cc-5e727f272340 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_utils.TestLocalLinkValidation.test_local_link_connection_net_type_invalid [0.091090s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_resource_class_old_api_version [0.120174s] ... 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-27a94852-5f39-4573-a326-12a479b281a7 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_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged [0.114493s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group [0.106423s] ... 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-ae547c63-ecde-49d4-ab0a-02ae2cebc3b0 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": "2026-04-12T07:47:14.729375+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-e9d2dbbe-c67f-439e-84c5-0af23ad2f11f 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": "2026-04-12T07:47:14.729375+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"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_020_nodes_node_ident_delete_admin [0.147058s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-7f336083-e449-4a9f-a207-2d7235d2a444 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.common.test_swift.SwiftTestCase.test_create_object_from_data [0.832758s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_net_type_unmanaged_combine_ok [0.060838s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_conductor_group_bad_version [0.091375s] ... 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-71267c1b-f025-40bf-be1d-7716075e329f 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_utils.TestLocalLinkValidation.test_local_link_connection_set_both_switches [0.055129s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_021_nodes_node_ident_delete_member [0.115330s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-117271c0-82ab-4326-821c-3a2f553ea708 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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 [0.078878s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_datapath_id [0.045249s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_empty_value [0.032786s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_invalid_key [0.039428s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_local_link_keys_mandatory [0.033621s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_022_nodes_node_ident_delete_observer [0.208007s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-81fd4b38-7865-4764-8490-8210f793b333 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_utils.TestLocalLinkValidation.test_local_link_connection_type_missing_local_link_mandatory_key [0.037077s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_not_mac_or_datapath_id [0.033605s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_023_nodes_validate_get_admin [0.081663s] ... 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-4c4e64a9-3e6d-423a-839c-5ee384db8000 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_hostname_missing [0.064090s] ... ok {0} ironic.tests.unit.common.test_swift.SwiftTestCase.test_create_object_from_data_create_container_fails [0.441460s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_mandatory [0.055804s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_024_nodes_validate_get_member [0.109371s] ... 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-3a478506-b83e-472d-848c-60669d02aaec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_port_id_missing [0.074172s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_025_nodes_validate_get_observer [0.123049s] ... 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-dccb9c87-f616-4b8b-8dac-aa76b4a51a9e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_utils.TestLocalLinkValidation.test_local_link_connection_type_smart_nic_keys_with_optional [0.141603s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_invalid_name [0.074137s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_026_nodes_maintenance_put_admin [0.233826s] ... 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-19a7c210-1171-4410-a13a-c15dcae12e8b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestPortgroupIdent.test_get_rpc_portgroup_name [0.089105s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_utils.TestPortgroupIdent.test_get_rpc_portgroup_uuid [0.045732s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces [0.890272s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'uuid': 'e873c534-524b-4929-8c62-6bcf4bcc55f3', '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/e873c534-524b-4929-8c62-6bcf4bcc55f3 Openstack-Request-Id: req-3f45a22a-0cd2-4802-b429-c066cbe13d5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "e873c534-524b-4929-8c62-6bcf4bcc55f3", "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/e873c534-524b-4929-8c62-6bcf4bcc55f3", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/ports", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/states", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/volume", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/volume", "rel": "bookmark"}]} GET /v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-594b004d-5d92-4b68-b79e-54cf18e364d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "e873c534-524b-4929-8c62-6bcf4bcc55f3", "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/e873c534-524b-4929-8c62-6bcf4bcc55f3", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/ports", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/states", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/volume", "rel": "self"}, {"href": "http://localhost/nodes/e873c534-524b-4929-8c62-6bcf4bcc55f3/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '1d850255-a81a-4edb-b1f6-ba72fc2a3292', '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/1d850255-a81a-4edb-b1f6-ba72fc2a3292 Openstack-Request-Id: req-15841b77-6be4-44d4-80f4-8de979cda5cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "1d850255-a81a-4edb-b1f6-ba72fc2a3292", "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/1d850255-a81a-4edb-b1f6-ba72fc2a3292", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/ports", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6- ba72fc2a3292/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/states", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/volume", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/volume", "rel": "bookmark"}]} GET /v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-10f61342-f52f-47ca-b8d7-8eea61a30437 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "1d850255-a81a-4edb-b1f6-ba72fc2a3292", "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/1d850255-a81a-4edb-b1f6-ba72fc2a3292", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/ports", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/states", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/volume", "rel": "self"}, {"href": "http://localhost/nodes/1d850255-a81a-4edb-b1f6-ba72fc2a3292/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '20daf187-fc3e-4967-a843-9cf662171c98', '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/20daf187-fc3e-4967-a843-9cf662171c98 Openstack-Request-Id: req-b992e6cd-c96a-458a-981b-3e83461de558 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": "20daf187-fc3e-4967-a843-9cf662171c98", "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/20daf187-fc3e-4967-a843-9cf662171c98", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/20daf187-fc3e-4967-a843-9cf662171c98/ports", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20daf187-fc3e-4967-a843-9cf662171c98/states", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20daf187-fc3e-4967-a843-9cf662171c98/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20daf187-fc3e-4967-a843-9cf662171c98/volume", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98/volume", "rel": "bookmark"}]} GET /v1/nodes/20daf187-fc3e-4967-a843-9cf662171c98 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-65ae2648-c235-412d-b45c-f2c4b2c86527 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "20daf187-fc3e-4967-a843-9cf662171c98", "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/20daf187-fc3e-4967-a843-9cf662171c98", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/ nodes/20daf187-fc3e-4967-a843-9cf662171c98/ports", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/20daf187-fc3e-4967-a843-9cf662171c98/states", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/20daf187-fc3e-4967-a843-9cf662171c98/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/20daf187-fc3e-4967-a843-9cf662171c98/volume", "rel": "self"}, {"href": "http://localhost/nodes/20daf187-fc3e-4967-a843-9cf662171c98/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': 'a8998941-29e7-4fbd-b1e5-30213a7f6734', '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/a8998941-29e7-4fbd-b1e5-30213a7f6734 Openstack-Request-Id: req-be1e8eeb-b196-49d6-85ae-cd3242f26bcb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "a8998941-29e7-4fbd-b1e5-30213a7f6734", "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/a8998941-29e7-4fbd-b1e5-30213a7f6734", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/ports", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/states", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/volume", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/volume", "rel": "bookmark"}]} GET /v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c9058485- 549c-49f4-b3ab-0485ec059ff8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "a8998941-29e7-4fbd-b1e5-30213a7f6734", "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/a8998941-29e7-4fbd-b1e5-30213a7f6734", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/ports", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/states", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/volume", "rel": "self"}, {"href": "http://localhost/nodes/a8998941-29e7-4fbd-b1e5-30213a7f6734/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '381b90e4-21ea-450f-b109-8c544ed99435', '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/381b90e4-21ea-450f-b109-8c544ed99435 Openstack-Request-Id: req-7d1a5b41-863b-4e78-8eff-891d19c510ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "381b90e4-21ea-450f-b109-8c544ed99435", "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/381b90e4-21ea-450f-b109-8c544ed99435", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435/ports", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435/states", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435/volume", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435/volume", "rel": "bookmark"}]} GET /v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a101b428-4b59-4ac4-86cc-1b5435392da3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "381b90e4-21ea-450f-b109-8c544ed99435", "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/381b90e4-21ea-450f-b109-8c544ed99435", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435/ports", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435/states", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/381b90e4-21ea-450f-b109-8c544ed99435/volume", "rel": "self"}, {"href": "http://localhost/nodes/381b90e4-21ea-450f-b109-8c544ed99435/volume", "rel": "bookmark"}]} POST /v1/nodes WIT H {'uuid': 'da80f17c-0525-44f4-8234-5b399ef1f9b4', '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/da80f17c-0525-44f4-8234-5b399ef1f9b4 Openstack-Request-Id: req-1180a659-8490-4636-94cd-5283a101567f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "da80f17c-0525-44f4-8234-5b399ef1f9b4", "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/da80f17c-0525-44f4-8234-5b399ef1f9b4", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/ports", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/states", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/volume", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/volume", "rel": "bookmark"}]} GET /v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a570896f-f41c-47fa-ac74-97bc2cf9dc95 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "da80f17c-0525-44f4-8234-5b399ef1f9b4", "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/da80f17c-0525-44f4-8234-5b399ef1f9b4", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/ports", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/states", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/volume", "rel": "self"}, {"href": "http://localhost/nodes/da80f17c-0525-44f4-8234-5b399ef1f9b4/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '9736199f-b824-44f1-aa05-9d53a0b49e0e', '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/9736199f-b824-44f1-aa05-9d53a0b49e0e Openstack-Request-Id: req-88313956-c032-4484-bd07-4e63de635253 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "9736199f-b824-44f1-aa05-9d53a0b49e0e", "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/9736199f-b824-44f1-aa05-9d53a0b49e0e", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/ports", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/states", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/volume", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/volume", "rel": "bookmark"}]} GET /v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c020a7c6-aa1b-4d7f-b280-b34ec19aeb76 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "9736199f-b824-44f1-aa05-9d53a0b49e0e", "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/9736199f-b824-44f1-aa05-9d53a0b49e0e", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/ports", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/states", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/volume", "rel": "self"}, {"href": "http://localhost/nodes/9736199f-b824-44f1-aa05-9d53a0b49e0e/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '121e8d3e-73c0-47fb-af57-1241697eb9f0', '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/121e8d3e-73c0-47fb-af57-1241697eb9f0 Openstack-Request-Id: req-04407dcc-abc7-4a4e-a974-47578392450a 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": "121e8d3e-73c0-47fb-af57-1241697eb9f0", "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/121e8d3e-73c0-47fb-af57-1241697eb9f0", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/ports", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/states", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/volume", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/volume", "rel": "bookmark"}]} GET /v1/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-686ca956-73ea-4f21-ac0d-9dfacba9ca96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "121e8d3e-73c0-47fb-af57-1241697eb9f0", "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/121e8d3e-73c0-47fb-af57-1241697eb9f0", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/121e8d3e-73c0- 47fb-af57-1241697eb9f0/ports", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/states", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/volume", "rel": "self"}, {"href": "http://localhost/nodes/121e8d3e-73c0-47fb-af57-1241697eb9f0/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '64466532-2c2a-48ea-86e5-5b655cf3619a', '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/64466532-2c2a-48ea-86e5-5b655cf3619a Openstack-Request-Id: req-74e48eb3-787f-477d-8fd7-a7a583f049bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "64466532-2c2a-48ea-86e5-5b655cf3619a", "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/64466532-2c2a-48ea-86e5-5b655cf3619a", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/ports", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/states", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/volume", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/volume", "rel": "bookmark"}]} GET /v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-72cc9598-74a3-41c6-bd5d-edf29 4d5a42d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "64466532-2c2a-48ea-86e5-5b655cf3619a", "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/64466532-2c2a-48ea-86e5-5b655cf3619a", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/ports", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/states", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/volume", "rel": "self"}, {"href": "http://localhost/nodes/64466532-2c2a-48ea-86e5-5b655cf3619a/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '291b3b27-5429-4525-9b71-3a16a89481ba', '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/291b3b27-5429-4525-9b71-3a16a89481ba Openstack-Request-Id: req-acfe7b3b-44fb-44a0-bbe4-195288b9ecaf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "291b3b27-5429-4525-9b71-3a16a89481ba", "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/291b3b27-5429-4525-9b71-3a16a89481ba", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/ports", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/states", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/volume", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/volume", "rel": "bookmark"}]} GET /v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d0ca7659-b7fc-417b-8f63-9788caf7f2a2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "291b3b27-5429-4525-9b71-3a16a89481ba", "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/291b3b27-5429-4525-9b71-3a16a89481ba", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/ports", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/states", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/volume", "rel": "self"}, {"href": "http://localhost/nodes/291b3b27-5429-4525-9b71-3a16a89481ba/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': '648a92f9-2ed 5-433a-8e63-44463f06182c', '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/648a92f9-2ed5-433a-8e63-44463f06182c Openstack-Request-Id: req-048bcdbd-d8cb-44e4-b136-c9b3ce8cf4a1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "648a92f9-2ed5-433a-8e63-44463f06182c", "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/648a92f9-2ed5-433a-8e63-44463f06182c", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/ports", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/states", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/volume", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/volume", "rel": "bookmark"}]} GET /v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6e729260-2150-4f64-986a-e856c6283960 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "648a92f9-2ed5-433a-8e63-44463f06182c", "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/648a92f9-2ed5-433a-8e63-44463f06182c", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/ports", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/states", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/volume", "rel": "self"}, {"href": "http://localhost/nodes/648a92f9-2ed5-433a-8e63-44463f06182c/volume", "rel": "bookmark"}]} POST /v1/nodes WITH {'uuid': 'c860fb01-508b-4763-8193-de78be3e1494', '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/c860fb01-508b-4763-8193-de78be3e1494 Openstack-Request-Id: req-4637809d-c963-4c50-bf9d-e31efd9e3bd8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "c860fb01-508b-4763-8193-de78be3e1494", "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/c860fb01-508b-4763-8193-de78be3e1494", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/c860fb01-508b-4763-8193-de78be3e1494/ports", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c860fb01-508b-4763-8193-de78be3e1494/states", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c860fb01-508b-4763-8193-de78be3e1494/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c860fb01-508b-4763-8193-de78be3e1494/volume", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494/volume", "rel": "bookmark"}]} GET /v1/nodes/c860fb01-508b-4763-8193-de78be3e1494 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-02c86d5f-3075-472e-897d-2f7ecb954457 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.40 {"uuid": "c860fb01-508b-4763-8193-de78be3e1494", "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/c860fb01-508b-4763-8193-de78be3e1494", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494", "rel": "bookmark"}], "chassis_uuid": "e74c40e0-d825-11e2-a28f-0800200c9a66", "ports": [{"href": "http://localhost/v1/nodes/c860fb01-508b-4763-8193-de78be3e1494/ports", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494/ports", "rel": "bookmark"}], "states": [{"href": "http://localhost/v1/nodes/c860fb01-508b-4763-8193-de78be3e1494/states", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494/states", "rel": "bookmark"}], "portgroups": [{"href": "http://localhost/v1/nodes/c860fb01-508b-4763-8193-de78be3e1494/portgroups", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494/portgroups", "rel": "bookmark"}], "volume": [{"href": "http://localhost/v1/nodes/c860fb01-508b-4763-8193-de78be3e1494/volume", "rel": "self"}, {"href": "http://localhost/nodes/c860fb01-508b-4763-8193-de78be3e1494/volume", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_027_nodes_maintenance_put_member [0.114205s] ... 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-c50f5493-2e9e-4edc-ae7b-70ecfee473a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_swift.SwiftTestCase.test_create_object_from_data_create_object_fails [0.561068s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector [0.089478s] ... 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-f8f02402-311e-4608-8bb8-5277edadfaa4 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-b8f5e8ea-458c-408f-8192-219b19ec7d6c 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"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_028_nodes_maintenance_put_observer [0.079298s] ... 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-8a3eebb5-0fee-43bc-a7be-08270727c4ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_volume_connector.TestPost.test_create_volume_connector_doesnt_contain_id [0.092253s] ... 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-2234f1e1-1795-469d-bd92-af34fc6df930 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": "2026-04-12T07:47:15.863158+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-5bcdb579-b4fb-4889-b730-780ace03bbc9 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": "2026-04-12T07:47:15.863158+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"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_029_nodes_maintenance_delete_admin [0.086725s] ... 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-c003465e-0a30-41d8-8b2f-1858cae5ed6b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_volume_connector.TestPost.test_create_volume_connector_error [0.076829s] ... 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-c1ab94de-7c03-4553-b9bd-941b90e28cb8 X-Openstack-Ironic-Api-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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_030_nodes_maintenance_delete_member [0.076913s] ... 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-8261e023-98be-422e-9f7c-67e853150f50 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_volume_connector.TestPost.test_create_volume_connector_generate_uuid [0.075528s] ... 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/5660ba21-71d3-4cfc-a207-932ed485124f Openstack-Request-Id: req-5c31f97e-a8f9-473d-b065-38d297221066 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5660ba21-71d3-4cfc-a207-932ed485124f", "created_at": "2026-04-12T07:47:16.024942+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/5660ba21-71d3-4cfc-a207-932ed485124f", "rel": "self"}, {"href": "http://localhost/volume/connectors/5660ba21-71d3-4cfc-a207-932ed485124f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/connectors/5660ba21-71d3-4cfc-a207-932ed485124f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7d2c952d-1c2e-45b3-9021-8507cd7c834e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5660ba21-71d3-4cfc-a207-932ed485124f", "created_at": "2026-04-12T07:47:16.024942+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/5660ba21-71d3-4cfc-a207-932ed485124f", "rel": "self"}, {"href": "http://localhost/volume/connectors/5660ba21-71d3-4cfc-a207-932ed485124f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_interfaces_bad_version [0.299191s] ... 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-8df4e9c0-8809-481b-9e1d-17804ba341aa 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-d149bb2b-1da0-4657-96a3-5ea5496fa4c3 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-c07aab6e-046b-4d45-b1ef-4a55300c5a53 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-0d0579d8-7d8d-4933-a295-b812a58aa4fe 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-f354d32c-f32d-4380-9a90-0553d39ca681 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-03b14626-87c0-4da0-ad9b-e8c9ba9a2771 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-c604c992-5312-4df4-b470-012ff6b24adf 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-2d79594e-4b84-42fe-aa44-2559aec6e601 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_031_nodes_maintenance_delete_observer [0.079367s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-abbda4cf-54cf-4225-bbb5-9a680dc00a55 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_volume_connector.TestPost.test_create_volume_connector_invalid_api_version [0.045785s] ... 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\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_specify_traits [0.084903s] ... 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-ff77fc2e-8477-4ebb-af76-516148e8fa4c X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_invalid_node_uuid_format [0.045310s] ... 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-a493a99c-a9f9-47f5-b3cf-a71d9edbe991 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_032_nodes_management_boot_device_put_admin [0.087783s] ... 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-b21bf220-0283-4cd7-bcf5-25153797993e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_node.TestPost.test_create_node_storage_interface_old_api_version [0.079386s] ... 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-f83fbcd1-ff33-4bb8-bd29-bb1fe2b8b344 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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_033_nodes_management_boot_device_put_member [0.093338s] ... 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-c341ae08-6788-46b4-88b9-3ddce78616f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_node.TestPost.test_create_node_valid_driver_info [0.112708s] ... 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-5a588049-3494-4295-8cd7-fb6b0d4569a1 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": "2026-04-12T07:47:16.294324+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-9a6d9415-dd63-4a63-b564-8016fc24010c 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": "2026-04-12T07:47:16.294324+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"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_034_nodes_management_boot_device_put_observer [0.103687s] ... 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-a8897278-e442-4fb1-889b-83c15381e019 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_valid_extra [0.099288s] ... 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-ff6c4a17-8e52-4c3b-a7d1-b882f7421185 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": "2026-04-12T07:47:16.403847+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-4f6b03ad-e923-4287-bcad-28626ad94c40 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": "2026-04-12T07:47:16.403847+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_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_connector_id [0.302475s] ... 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-9547afae-8477-4b85-971f-409832607441 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_035_nodes_management_boot_device_get_admin [0.079918s] ... 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-2f6365e0-553f-4bd1-9983-a5f1a349d4b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_node_uuid [0.053391s] ... 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-66e41307-6bda-458f-bbd7-9b00ab24d671 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_036_nodes_management_boot_device_get_member [0.081510s] ... 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-8dc9e6fb-dbc0-4392-ba4d-97fa9d3e623e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_node.TestPost.test_create_node_valid_properties [0.110403s] ... 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-6e3f567a-1074-47ee-ad6c-033503967b58 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": "2026-04-12T07:47:16.519858+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-1b55e6dc-42a9-4d76-bd2a-a851948fde45 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": "2026-04-12T07:47:16.519858+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_volume_connector.TestPost.test_create_volume_connector_no_mandatory_field_type [0.051335s] ... 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-75019167-9c37-40a8-b222-b17a9d377d26 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_volume_connector.TestPost.test_create_volume_connector_node_uuid_not_found [0.043345s] ... 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-291c62ce-04d3-4370-b705-d5071b67fba2 X-Openstack-Ironic-Api-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_volume_connector.TestPost.test_create_volume_connector_type_value_already_exist [0.058742s] ... 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-684bbf63-5db1-4c60-817a-e12bf0eef6e1 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": "2026-04-12T07:47:16.634351+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': '18bdc6d1-8de5-4bcd-800e-f7e5b4855e5f', '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-e3b425e4-1820-4761-8fb2-8ea5f3fb97d4 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_037_nodes_management_boot_device_get_observer [0.120234s] ... 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-9530cedd-5917-4233-a4a9-a2378f68b7ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.common.test_swift.SwiftTestCase.test_delete_object [0.849027s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_create_node_with_chassis_uuid [0.123421s] ... 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-f87f86d6-26e7-439d-bcc0-032a13aae320 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": "2026-04-12T07:47:16.635625+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-ac344b0f-8500-47ea-8d0d-a29e55f8b020 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": "2026-04-12T07:47:16.635625+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_volume_connector.TestPost.test_create_volume_connector_valid_extra [0.057811s] ... 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-5d6049ec-dcb0-46c5-899d-26f75dc1ef51 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": "2026-04-12T07:47:16.690430+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-e12238eb-dbf8-4975-9f30-4293f77c5b19 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": "2026-04-12T07:47:16.690430+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_volume_connector.TestPost.test_node_uuid_to_node_id_mapping [0.058347s] ... 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-83dc23bc-c046-4f27-b833-a4f65303f978 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": "2026-04-12T07:47:16.755702+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"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin [0.138360s] ... 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-ca91b941-52de-48c4-9f6f-85912cf010f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_node.TestPost.test_create_node_with_default_conductor_group [0.131743s] ... 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-84656d08-a915-444b-b252-be794989300d 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": "2026-04-12T07:47:16.763113+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-f3fe97ab-d111-4800-8906-0628506f128b 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": "2026-04-12T07:47:16.763113+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_multi [0.059064s] ... 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-32fcfcca-bc18-4a0f-816b-232c7d725cf7 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": "2026-04-12T07:47:16.798603+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_volume_target.TestPatch.test_add_node_id [0.041370s] ... 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-4f8fb91d-0800-4223-8607-862e2b50cd58 X-Openstack-Ironic-Api-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.TestRBACModelBeforeScopes.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member [0.080078s] ... 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-463daaa4-1dd6-47b4-9c16-866da97b5de6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_node.TestPost.test_create_node_with_default_resource_class [0.131988s] ... 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-cbe4721d-72fd-4a7c-9857-b1221262c003 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": "2026-04-12T07:47:16.914416+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-33190bb8-54eb-4ac2-88a5-2e19e541f2b1 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": "2026-04-12T07:47:16.914416+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"}]} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_node_uuid [0.075937s] ... 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-a4bd07f4-782a-4493-bdf7-49c554434c59 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": "2026-04-12T07:47:16.900607+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_volume_target.TestPatch.test_add_node_uuid_invalid_type [0.041430s] ... 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-822c01f1-5a0a-401a-a357-29b106eef71c X-Openstack-Ironic-Api-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.TestRBACModelBeforeScopes.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer [0.119679s] ... 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-c86ebd9f-42b4-4ad0-a0d5-64afcfa71758 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_node.TestPost.test_create_node_with_internal_field [0.065211s] ... 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-4c295f3f-defd-409f-88a5-bc8421af60be 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}"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_add_root [0.053083s] ... 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-fbe7b10b-8c7b-4df3-bd4b-e942603f06e9 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": "2026-04-12T07:47:17.014751+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"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_portgroups_subresource [0.046585s] ... 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-cfc6f657-47b1-4bac-9d59-c23a175b98e6 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_041_nodes_management_inject_nmi_put_admin [0.088610s] ... 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-5c80e0b1-4c30-486d-83d7-213bc117759a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_node.TestPost.test_post_ports_subresource [0.064373s] ... 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-f2bc5745-c14c-4fbe-a96b-7818a27680da 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_volume_target.TestPatch.test_add_root_non_existent [0.083646s] ... 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-e67f0382-451f-4dd5-99a7-8df404c0168e X-Openstack-Ironic-Api-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.common.test_swift.SwiftTestCase.test_delete_object_exc [0.482063s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_ports_subresource_no_node_id [0.042215s] ... 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\": \"\"}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_042_nodes_management_inject_nmi_put_member [0.093476s] ... 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-862ad0cf-cbf2-4b80-85c2-e61e6fee7e51 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_volume_target.TestPatch.test_remove_mandatory_field [0.065845s] ... 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-2f0a7057-3fe2-4c12-b202-dfea8d146d51 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_connectors_subresource [0.048760s] ... 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-51644e11-f4f2-4b63-9de6-bf3db9130ab0 X-Openstack-Ironic-Api-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.TestPost.test_post_volume_connectors_subresource_no_node_id [0.037872s] ... 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\": \"\"}"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_multi [0.080420s] ... 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-f7eb49dd-7d21-4e03-bce3-cc2c104228cf 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": "2026-04-12T07:47:17.219096+00:00", "updated_at": "2026-04-12T07:47:17.224836+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-df3c463c-4fb2-4555-b4d8-626f6f3859f6 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": "2026-04-12T07:47:17.219096+00:00", "updated_at": "2026-04-12T07:47:17.224836+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"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_post_volume_targets_subresource [0.042682s] ... 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-7cb56685-aa90-4ad2-b31e-8c8b4ee35bb9 X-Openstack-Ironic-Api-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.TestPost.test_vendor_passthru_async [0.049676s] ... 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-c0437cdc-504a-4249-8154-5218d1747cba 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_volume_target.TestPatch.test_remove_node_id [0.074981s] ... 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-3888a387-18f6-4eda-911b-325270568030 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_remove_non_existent_property_fail [0.060386s] ... 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-74a85b0b-28ef-4400-a873-9b63dabf9759 X-Openstack-Ironic-Api-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_node.TestPost.test_vendor_passthru_by_name [0.071774s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes/node-109/vendor_passthru/test WITH {'foo': 'bar'} GOT Response: 202 Accepted Openstack-Request-Id: req-9a3337fe-36b7-4141-9ba4-348ce59a8f04 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_volume_target.TestPatch.test_remove_uuid [0.042450s] ... 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-1302108f-22fb-4b50-8239-6a73ca0041b1 X-Openstack-Ironic-Api-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.controllers.v1.test_node.TestPost.test_vendor_passthru_delete [0.045286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/vendor_passthru/do_test GOT Response: 202 Accepted Openstack-Request-Id: req-d271822e-2851-48fd-b4ac-6ac571a11311 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.common.test_swift.SwiftTestCase.test_delete_object_exc_resource_not_found [0.367596s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_boot_index_already_exist [0.052555s] ... 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-007f0e8a-f219-4de2-971c-f2eae9c06235 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_get [0.080674s] ... 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-afa5a0f7-954e-49d1-9462-fba1536b4be9 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_volume_target.TestPatch.test_replace_invalid_power_state [0.060151s] ... 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-82d48517-e2d7-4031-b577-178fc4fbc0a5 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_methods [0.046641s] ... 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-4ea03069-4a03-4496-8ce8-1b2d4ac20f5b 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-8f1b2a46-e34d-44c6-92a2-4a36671028e2 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"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer [0.425287s] ... 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-5816971c-4139-49bc-a813-bd35b37a9268 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_volume_target.TestPatch.test_replace_multi [0.061248s] ... 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-f8396383-c58e-437c-8ce6-27f2e46b1e8a 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": "2026-04-12T07:47:17.596608+00:00", "updated_at": "2026-04-12T07:47:17.600299+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"} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_no_such_method [0.037853s] ... 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-b6620577-6b7b-4c4e-a0ec-40efbe26dbd2 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.TestPost.test_vendor_passthru_put [0.039230s] ... 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-aabd16c3-f9a9-45e3-9cdb-0932d43bdbea 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_volume_target.TestPatch.test_replace_node_id [0.059390s] ... 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-d3c8cd66-78e9-4066-8fce-8db6b91fe633 X-Openstack-Ironic-Api-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.TestRBACModelBeforeScopes.test_rbac_legacy_044_nodes_states_get_admin [0.097364s] ... 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-19204f57-b971-4b55-9e94-4e67393da6eb 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} {3} ironic.tests.unit.api.controllers.v1.test_node.TestPost.test_vendor_passthru_sync [0.055446s] ... 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-0fa4e626-8851-4052-b394-44afdfbbd506 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"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_node_uuid [0.068629s] ... 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-bd3f7b42-fc9b-424b-a9cc-8a1412d5f6a4 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": "2026-04-12T07:47:17.723330+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_node.TestPost.test_vendor_passthru_without_method [0.035328s] ... 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-855fb727-185e-4790-b413-ab055e687c62 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_volume_target.TestPatch.test_replace_node_uuid_inalid_type [0.050072s] ... 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-c1f3c137-7aa6-4df1-a075-6dc251b8af8c X-Openstack-Ironic-Api-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_port.TestDelete.test_delete_port_byaddress [0.047824s] ... 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-7917289e-d3fc-4242-a166-76e43387bb4c 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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_045_nodes_states_get_member [0.116658s] ... 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-39017acb-937e-4c09-873d-49490a99f968 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_volume_target.TestPatch.test_replace_non_existent_node_uuid [0.057008s] ... 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-f490cfc7-10a5-4459-bc73-77db5ade79ce X-Openstack-Ironic-Api-Maximum-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.controllers.v1.test_port.TestDelete.test_delete_port_byid [0.053380s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 204 No Content Openstack-Request-Id: req-6f4d62e1-c1af-4757-99d9-8acc1f1760d4 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_046_nodes_states_get_observer [0.094629s] ... 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-117bb495-6e20-47ad-9553-145164af6b14 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} {3} ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_delete_port_node_locked [0.066540s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-1089c15b-db92-46c9-9d01-0b65a5c729f1 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}"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestDelete.test_portgroups_subresource_delete [0.056006s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4/ports/bf6a5b3e-1d17-4a6f-8fa3-9756ec73d038 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e0c1ec18-d102-4a05-a27a-2e35f81be04e 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_port.TestListPorts.test_collection_links [0.060002s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6157d110-dbc5-4795-abc0-914326c11ce7 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": "05725ca1-a7a5-42e0-b96d-ebd146d43316", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/05725ca1-a7a5-42e0-b96d-ebd146d43316", "rel": "self"}, {"href": "http://localhost/ports/05725ca1-a7a5-42e0-b96d-ebd146d43316", "rel": "bookmark"}]}, {"uuid": "5899a318-45bf-4a3c-a490-7abc53e2e9c2", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/5899a318-45bf-4a3c-a490-7abc53e2e9c2", "rel": "self"}, {"href": "http://localhost/ports/5899a318-45bf-4a3c-a490-7abc53e2e9c2", "rel": "bookmark"}]}, {"uuid": "196a603f-b919-436b-ad9a-dc969c725777", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/196a603f-b919-436b-ad9a-dc969c725777", "rel": "self"}, {"href": "http://localhost/ports/196a603f-b919-436b-ad9a-dc969c725777", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=3&marker=196a603f-b919-436b-ad9a-dc969c725777"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_replace_singular [0.187290s] ... 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-f33fa469-2692-4747-a331-52c6a0050af6 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": "2026-04-12T07:47:17.964571+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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_047_nodes_states_power_put_admin [0.153291s] ... 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-313ac915-f0bd-4382-a621-a3ea4b2b55f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_048_nodes_states_power_put_member [0.084353s] ... 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-c0bda38d-81dd-4184-9df5-c4bba0e09b9a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_volume_target.TestPatch.test_update_byid [0.107692s] ... 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-45e5b48d-23c4-4bd2-9ae9-a0a2cbb753cd 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": "2026-04-12T07:47:18.134601+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"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_custom_fields [0.107004s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?fields=address,uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2b9dfb1a-0c96-4e63-b598-ef0f589452f6 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": "82749c08-9627-4dc2-9b36-a0176728ff94", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/82749c08-9627-4dc2-9b36-a0176728ff94", "rel": "self"}, {"href": "http://localhost/ports/82749c08-9627-4dc2-9b36-a0176728ff94", "rel": "bookmark"}]}, {"uuid": "26721d73-a562-4b0a-aef3-b2288197fc45", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/26721d73-a562-4b0a-aef3-b2288197fc45", "rel": "self"}, {"href": "http://localhost/ports/26721d73-a562-4b0a-aef3-b2288197fc45", "rel": "bookmark"}]}, {"uuid": "ded9d385-016a-49fc-9ac8-7aeac2543475", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/ded9d385-016a-49fc-9ac8-7aeac2543475", "rel": "self"}, {"href": "http://localhost/ports/ded9d385-016a-49fc-9ac8-7aeac2543475", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=address,uuid&limit=3&marker=ded9d385-016a-49fc-9ac8-7aeac2543475"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPatch.test_update_byid_invalid_api_version [0.035406s] ... 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\": \"\"}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_049_nodes_states_power_put_observer [0.074885s] ... 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-a7526f15-d77c-484a-94b5-3a91ee990f4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_volume_target.TestPatch.test_update_not_found [0.036973s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/56aed754-6d5f-4c77-833a-7a59dcf04643 WITH [{'path': '/extra/foo', 'value': 'bar', 'op': 'add'}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-90f1ab9b-7383-4c15-b379-545cc5b4fef2 X-Openstack-Ironic-Api-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 56aed754-6d5f-4c77-833a-7a59dcf04643 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.common.test_swift.SwiftTestCase.test_get_temp_url [0.779942s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_collection_links_default_limit [0.125356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f2a7150e-29c4-42a0-8576-e441ee97e6af 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": "a1743ab0-81a4-44c5-8e6a-4abfa3895c2f", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/a1743ab0-81a4-44c5-8e6a-4abfa3895c2f", "rel": "self"}, {"href": "http://localhost/ports/a1743ab0-81a4-44c5-8e6a-4abfa3895c2f", "rel": "bookmark"}]}, {"uuid": "c4222afd-30a1-498c-a014-cfac5411f29c", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/c4222afd-30a1-498c-a014-cfac5411f29c", "rel": "self"}, {"href": "http://localhost/ports/c4222afd-30a1-498c-a014-cfac5411f29c", "rel": "bookmark"}]}, {"uuid": "4e9bafc0-9d54-4f27-952b-b34c298c70c7", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/4e9bafc0-9d54-4f27-952b-b34c298c70c7", "rel": "self"}, {"href": "http://localhost/ports/4e9bafc0-9d54-4f27-952b-b34c298c70c7", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=3&marker=4e9bafc0-9d54-4f27-952b-b34c298c70c7"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target [0.066090s] ... 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-8294a3e5-ce1b-4c7a-bbd9-fb689b229f08 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-c3127708-fcc3-4a3c-972f-fe280a5b2843 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"} {0} ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_not_use_standard_locale [0.027327s] ... ok {0} ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_no_env_variables [0.019505s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_050_nodes_states_boot_mode_put_admin [0.108901s] ... 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-730fb33e-4061-484d-8cee-b835380247e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_port.TestListPorts.test_detail [0.056417s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7c93771c-4fe5-456b-99b2-2e8bb3bc4e83 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": "2026-04-12T07:47:18.331158+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"}]} {0} ironic.tests.unit.common.test_utils.ExecuteTestCase.test_execute_use_standard_locale_with_env_variables [0.020281s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_doesnt_contain_id [0.068109s] ... 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-37ab8f96-c14a-4d23-a960-067a321c6909 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": "2026-04-12T07:47:18.347963+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-e2cc17c0-6d94-4d3e-bb06-b163ef563d2b 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": "2026-04-12T07:47:18.347963+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.common.test_utils.TempFilesTestCase.test__check_dir_free_space_ok [0.020573s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_against_single [0.042467s] ... 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-5aca3130-bfd3-465a-bb80-2438cae4efd8 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.common.test_utils.TempFilesTestCase.test__check_dir_writable_not_writable [0.020117s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_error [0.043274s] ... 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-0ccdef1b-7725-40ec-b9c4-f3c5c53c2bb7 X-Openstack-Ironic-Api-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.common.test_utils.TempFilesTestCase.test__check_dir_writable_ok [0.019293s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_051_nodes_states_boot_mode_put_member [0.079516s] ... 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-ba887e93-4975-48f9-8dc6-e11637dec477 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_utils.TempFilesTestCase.test_check_dir_free_space_raises [0.019687s] ... ok {0} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_no_dir [0.022803s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_not_supported [0.072829s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?node=test-node WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-265c2030-0f5b-4bc5-a51c-199786508642 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.common.test_utils.TempFilesTestCase.test_check_dir_ok [0.020792s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_generate_uuid [0.072209s] ... 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/0a78c5a5-e141-45d4-a321-5363ca5868d2 Openstack-Request-Id: req-956a64e3-89bc-4006-b075-32b6baadce8a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0a78c5a5-e141-45d4-a321-5363ca5868d2", "created_at": "2026-04-12T07:47:18.468652+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/0a78c5a5-e141-45d4-a321-5363ca5868d2", "rel": "self"}, {"href": "http://localhost/volume/targets/0a78c5a5-e141-45d4-a321-5363ca5868d2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} GET /v1/volume/targets/0a78c5a5-e141-45d4-a321-5363ca5868d2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6645e7e7-a293-4e98-8aa9-d788cbddcd2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0a78c5a5-e141-45d4-a321-5363ca5868d2", "created_at": "2026-04-12T07:47:18.468652+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/0a78c5a5-e141-45d4-a321-5363ca5868d2", "rel": "self"}, {"href": "http://localhost/volume/targets/0a78c5a5-e141-45d4-a321-5363ca5868d2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_check_dir_with_pass_in [0.020970s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_052_nodes_states_boot_mode_put_observer [0.084793s] ... 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-ccb03a18-e790-409d-b27d-52740c8ac64d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_by_node_name_ok [0.045040s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-09c84cac-85f0-4b7c-9e40-0b79ed92afe4 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": "2026-04-12T07:47:18.494001+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_volume_target.TestPost.test_create_volume_target_invalid_api_version [0.035249s] ... 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.common.test_utils.TempFilesTestCase.test_is_memory_insufficient [0.021948s] ... ok {0} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_good [0.020053s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_invalid_node_uuid_format [0.040478s] ... 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-1952dfb9-21cd-46d1-b428-57332ce2e554 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_recovers [0.019329s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_053_nodes_states_secure_boot_put_admin [0.081611s] ... 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-20568e26-0ddd-49c5-a1cc-f400ba481518 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.common.test_utils.TempFilesTestCase.test_is_memory_insufficient_warning_only [0.021200s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_node_uuid [0.035672s] ... 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-8ffd166f-13a2-4eef-8b67-a1854488332d X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir [0.026464s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_no_mandatory_field_type [0.033619s] ... 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-70456c4d-9dad-4c3d-9d0f-fa4a10406954 X-Openstack-Ironic-Api-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.common.test_utils.TempFilesTestCase.test_tempdir_mocked [0.020929s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_054_nodes_states_secure_boot_put_member [0.075049s] ... 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-447d45c2-e39d-4d25-babc-e2198e81f907 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_volume_target.TestPost.test_create_volume_target_no_mandatory_field_value [0.035285s] ... 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-ca16e8f7-63e1-4224-b91e-627d9dba475c X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.common.test_utils.TempFilesTestCase.test_tempdir_mocked_error_on_rmtree [0.025479s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_node_uuid_not_found [0.038310s] ... 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-ddd87734-4a1c-483c-a96e-168bebc4090e X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_candidate_nodes_mismatch [0.059046s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_055_nodes_states_secure_boot_put_observer [0.073365s] ... 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-f9f0cace-fb82-4f92-b2e0-7e765a75bb2b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_create_volume_target_valid_extra [0.078221s] ... 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-2b5741ea-3400-4dad-b629-9d0a29625f84 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": "2026-04-12T07:47:18.759589+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-8a30365c-f46f-4588-84bf-3d2efcf87197 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": "2026-04-12T07:47:18.759589+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"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_query [0.276098s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3579134f-91f0-4414-acaa-8cc51753c3f9 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": "2026-04-12T07:47:18.770911+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"}]} {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_node_associated_with_another_instance [0.067080s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_056_nodes_states_provision_put_admin [0.077262s] ... 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-b2c5be3f-63da-4b21-8bc6-ac5cddc3806b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_allocations.BackfillAllocationTestCase.test_non_existing_node [0.028961s] ... ok {2} ironic.tests.unit.api.controllers.v1.test_volume_target.TestPost.test_node_uuid_to_node_id_mapping [0.046982s] ... 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-feded18a-9357-4946-8cf2-3b14162c948a 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": "2026-04-12T07:47:18.827339+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_port.TestListPorts.test_detail_query_false [0.048382s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-783bca59-10c0-47e6-b81a-fec483029d10 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-765e63e2-cd53-47a6-948b-4b95614b4c69 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.test_acl.TestRBACBasic.test_basic_1_values ... SKIPPED: For value storage {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_resource_class_mismatch [0.048164s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_allowed [0.051196s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?sort_key=pxe_enabled WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d808fae9-3386-4a69-8b3d-f64467a8b99b 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": "4907cb94-da15-491e-ac4b-d4d2e76a77ae", "created_at": "2026-04-12T07:47:18.866935+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/4907cb94-da15-491e-ac4b-d4d2e76a77ae", "rel": "self"}, {"href": "http://localhost/ports/4907cb94-da15-491e-ac4b-d4d2e76a77ae", "rel": "bookmark"}], "portgroup_uuid": null}, {"uuid": "337d6300-e204-46f7-9b63-ff72b71d2ebb", "created_at": "2026-04-12T07:47:18.870827+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/337d6300-e204-46f7-9b63-ff72b71d2ebb", "rel": "self"}, {"href": "http://localhost/ports/337d6300-e204-46f7-9b63-ff72b71d2ebb", "rel": "bookmark"}], "portgroup_uuid": null}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_057_nodes_states_provision_put_member [0.098171s] ... 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-c68669e4-a169-4309-a6e7-19db3fdae620 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACBasic.test_basic_2_unauthenticated_user_cannot_get_node [0.045515s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/4f7bf900-85cc-4362-b6b3-8fe549896eb2 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2f9d83e9-0b37-49a9-8e61-82c6aed457c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 4f7bf900-85cc-4362-b6b3-8fe549896eb2 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_sort_key_not_allowed [0.037799s] ... 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-b9fc8e14-f3f1-4662-998e-8529d13e974d 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}"} {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_state_not_active [0.058978s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_3_project_admin_can_get_node [0.045177s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/c41117f4-9c2d-4965-be5d-0c6b1bbd829e WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e89a2e85-deab-4ba2-90c1-a40c2617ba86 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node c41117f4-9c2d-4965-be5d-0c6b1bbd829e could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_and_fields [0.040066s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-b0b23cc7-42d9-4eed-b8a2-35334e2fddcb X-Openstack-Ironic-Api-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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_058_nodes_states_provision_put_observer [0.077467s] ... 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-1dfc1d83-c332-4ecc-9896-0f4b15f8997d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_traits_mismatch [0.063369s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_4_project_member_cannot_get_node [0.048110s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/2edcf9e3-0e4e-4cba-b39e-0ac12a761681 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-72719fc1-c7b7-4882-ae8b-3e7e7592c0e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 2edcf9e3-0e4e-4cba-b39e-0ac12a761681 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_false_and_fields [0.062828s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?detail=False&fields=internal_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f86ad8e-7918-4b24-9a06-5eb4f27a7394 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"}]}]} {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_uuid_associated_with_another_instance [0.072646s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_detail_using_query_old_version [0.049645s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-e4161925-715e-444c-ad8e-d6cc65f90c28 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_port.TestListPorts.test_detail_with_incorrect_api_usage [0.032757s] ... 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-82648926-8165-4a7b-a9ea-054cec6a75d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": []} {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_associated_node [0.052587s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_059_nodes_states_raid_put_admin [0.151901s] ... 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-cd4adbaa-72d8-4e8b-b234-0c4613a87afa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_port.TestListPorts.test_empty [0.040627s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-36698963-3ec8-4b46-a9a8-6bf263735e27 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": []} {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_candidate_nodes [0.060711s] ... ok {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_with_unassociated_node [0.053861s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_060_nodes_states_raid_put_member [0.113200s] ... 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-a5d8c810-bb10-46e3-b70c-0afd439ac917 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin [0.109634s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0e74bfd6-8050-47fb-b1e8-88921766f250 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": "67d57fd5-6a97-4183-9dcf-8c8035ec90d1", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/67d57fd5-6a97-4183-9dcf-8c8035ec90d1", "rel": "self"}, {"href": "http://localhost/ports/67d57fd5-6a97-4183-9dcf-8c8035ec90d1", "rel": "bookmark"}]}, {"uuid": "7985457a-7e26-43eb-8399-984ae9f63eb2", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/7985457a-7e26-43eb-8399-984ae9f63eb2", "rel": "self"}, {"href": "http://localhost/ports/7985457a-7e26-43eb-8399-984ae9f63eb2", "rel": "bookmark"}]}, {"uuid": "89d944f6-e25a-4bdc-bee1-7ca27850e77b", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/89d944f6-e25a-4bdc-bee1-7ca27850e77b", "rel": "self"}, {"href": "http://localhost/ports/89d944f6-e25a-4bdc-bee1-7ca27850e77b", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_5_public_api [0.270786s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-492a8f94-b516-4c80-9843-6d6c350b5304 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"}]} {0} ironic.tests.unit.conductor.test_allocations.BackfillAllocationTestCase.test_without_resource_class [0.048414s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker [0.019506s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_cannot_use_reserved [0.018928s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_node_name_non_admin_no_match [0.070538s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e50c90d8-d5ae-4792-91aa-16fb66f12ff1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.5 {"ports": []} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_061_nodes_states_raid_put_observer [0.086176s] ... 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-f85f6c0e-4830-4333-a56e-15199d017bf0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_no_reserved [0.019994s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_6_public_api_v1 [0.095820s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9f9b6972-af82-4783-a2cb-805aef0b7332 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_port.TestListPorts.test_get_all_by_node_name_not_supported [0.050453s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?node=test-node WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-916c4ad7-ff11-4c22-8dd0-4647d8d73fc7 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.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_none_free [0.029966s] ... ok {0} ironic.tests.unit.conductor.test_base_manager.ManagerSpawnWorkerTestCase.test__spawn_worker_reserved [0.021004s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_062_nodes_states_console_get_admin [0.092315s] ... 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-41d44361-60eb-437e-891a-5787f13b296b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACBasic.test_basic_7_public_api_v1_slash [0.077372s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6fd9b338-c78f-4760-81b4-1592943bd88d 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_port.TestListPorts.test_get_all_by_node_name_ok [0.095448s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be6c2bec-2f0b-459c-98f4-b5cd05c2af7b 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": "52e823ad-e40d-4ee3-86ea-0577689f6ae3", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/52e823ad-e40d-4ee3-86ea-0577689f6ae3", "rel": "self"}, {"href": "http://localhost/ports/52e823ad-e40d-4ee3-86ea-0577689f6ae3", "rel": "bookmark"}]}, {"uuid": "c740317f-6fe6-4e75-9528-ea797c4c1295", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/c740317f-6fe6-4e75-9528-ea797c4c1295", "rel": "self"}, {"href": "http://localhost/ports/c740317f-6fe6-4e75-9528-ea797c4c1295", "rel": "bookmark"}]}, {"uuid": "3b279a73-1886-4e84-be98-7bed5736ac3b", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/3b279a73-1886-4e84-be98-7bed5736ac3b", "rel": "self"}, {"href": "http://localhost/ports/3b279a73-1886-4e84-be98-7bed5736ac3b", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.test_acl.TestRBACBasic.test_basic_8_public_api_v1_json [0.051752s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1.json WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {0} ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state [0.104097s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_063_nodes_states_console_get_member [0.082013s] ... 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-4a5d4547-90a1-4404-959a-d24b6f840bc9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_port.TestListPorts.test_get_all_by_node_uuid_and_name [0.049656s] ... 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-91350e20-6c79-48b9-bd27-6cd81cbfc463 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": "2026-04-12T07:47:19.523353+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.test_acl.TestRBACBasic.test_basic_9_public_api_v1_xml [0.048341s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1.xml 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_port.TestListPorts.test_get_all_by_portgroup_name [0.052276s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail?portgroup=fooname WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8735f8ef-48fd-4dd1-bd9d-d9fc17d25ae8 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": "2026-04-12T07:47:19.576428+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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_064_nodes_states_console_put_admin [0.073698s] ... 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-f923c2fb-86c1-48ed-8bc8-9f7fc0c51fdd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_001_values ... SKIPPED: These are fake reference values for YAML templating {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid [0.051392s] ... 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-9bd8bb1c-e54a-47d4-8ff7-89400fff497c 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": "2026-04-12T07:47:19.627676+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"}]} {0} ironic.tests.unit.conductor.test_base_manager.MiscTestCase.test__fail_transient_state_maintenance [0.145651s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_and_node_uuid [0.035027s] ... 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-d31a1585-51ba-4a51-bf2a-a1a0228260be 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_065_nodes_states_console_put_member [0.091522s] ... 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-36ddc0b9-e43a-49c9-9c96-aaef48e1d499 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin [0.054700s] ... 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-0306a659-7dcf-417f-8d1f-24c70be461f3 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": "2026-04-12T07:47:19.718243+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.test_acl.TestRBACScopedRequests.test_system_scoped_002_nodes_post_admin [0.121243s] ... 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-1ed261ad-7b7e-4fff-91ee-593bbe95cade X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_066_nodes_states_console_put_observer [0.080717s] ... 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-d2ffcdbd-8a95-436b-a134-aadb65c2c30d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_non_admin_no_match [0.050908s] ... 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-88f43e3f-afd4-43c0-9d0e-5c05970762fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.24 {"ports": []} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_all_by_portgroup_uuid_older_api_version [0.037199s] ... 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-3656b5ee-24f0-4652-854a-dc5407543f53 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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin [0.084403s] ... 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-822cb38c-7103-47e0-ad70-0f8041036f4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_003_nodes_post_member [0.129602s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-99598a4e-d5ec-44b5-9540-f155d542984f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_port.TestListPorts.test_get_collection_custom_fields [0.089269s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9745be66-122e-4592-a706-19eeb153f0c0 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": "3a98bb9d-e737-4d07-a135-f3bc6e6a7150", "extra": {}, "links": [{"href": "http://localhost/v1/ports/3a98bb9d-e737-4d07-a135-f3bc6e6a7150", "rel": "self"}, {"href": "http://localhost/ports/3a98bb9d-e737-4d07-a135-f3bc6e6a7150", "rel": "bookmark"}]}, {"uuid": "a92e6164-b051-4334-ac13-4ac30e06e56f", "extra": {}, "links": [{"href": "http://localhost/v1/ports/a92e6164-b051-4334-ac13-4ac30e06e56f", "rel": "self"}, {"href": "http://localhost/ports/a92e6164-b051-4334-ac13-4ac30e06e56f", "rel": "bookmark"}]}, {"uuid": "9dc1bdeb-1e3f-45c8-8678-f358797c7c6e", "extra": {}, "links": [{"href": "http://localhost/v1/ports/9dc1bdeb-1e3f-45c8-8678-f358797c7c6e", "rel": "self"}, {"href": "http://localhost/ports/9dc1bdeb-1e3f-45c8-8678-f358797c7c6e", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member [0.076148s] ... 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-de1a2f06-16e9-4f69-9d63-33a79e1a3739 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_004_nodes_post_reader [0.107896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-58ea16fe-cc45-4ee1-8573-24c472e5dbeb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_port.TestListPorts.test_get_collection_next_marker_no_uuid [0.089545s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?fields=address&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2bfcb63e-5bd3-41dd-9f04-923e6063e3c3 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/bbb95f37-1410-4771-b475-5e5393e38abe", "rel": "self"}, {"href": "http://localhost/ports/bbb95f37-1410-4771-b475-5e5393e38abe", "rel": "bookmark"}]}, {"address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/b7817a4b-12e6-40de-aa74-1079600a70f2", "rel": "self"}, {"href": "http://localhost/ports/b7817a4b-12e6-40de-aa74-1079600a70f2", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=address&limit=2&marker=b7817a4b-12e6-40de-aa74-1079600a70f2"} {0} ironic.tests.unit.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles [0.355739s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer [0.089973s] ... 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-e55c54a0-5972-4019-8830-53a089a47baf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_api_version [0.051975s] ... 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-cffcffc9-a0a2-4e36-ba37-0dfb2f34f124 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_070_nodes_vendor_passthru_get_admin [0.072944s] ... 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-8f32e197-0ddf-44c3-b8d3-fb3659eb2b61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_005_nodes_post_service [0.104640s] ... 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-70f1e616-a39d-4c5a-9f4a-4af679ad9f1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_port.TestListPorts.test_get_custom_fields_invalid_fields [0.043888s] ... 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-9859e8e9-7187-4d03-9f58-c280af6d1f73 X-Openstack-Ironic-Api-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.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_failed [0.107773s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_is_smartnic [0.056912s] ... 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-7e37714e-bd3d-4b55-91d6-40041219ea95 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-444eef69-294e-4224-ad9b-deb33e5f08db 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.test_acl.TestRBACScopedRequests.test_system_scoped_006_nodes_get_node_admin [0.081516s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c80bea35-3868-4a5b-a58b-3f348d8ccb90 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": "2026-04-12T07:47:20.141790+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_071_nodes_vendor_passthru_get_member [0.084507s] ... 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-03269f1c-de5d-4ed6-aa83-029b71a9bb84 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_no_console_enabled [0.082685s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network [0.058418s] ... 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-4da046c3-ae48-4b32-b053-942fb69fd098 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-0822e59a-3647-44f2-8213-2547f464ace4 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"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_007_nodes_get_node_member [0.074227s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-593c2455-04b6-4730-9291-66aae2897895 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": "2026-04-12T07:47:20.211733+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_072_nodes_vendor_passthru_get_observer [0.087211s] ... 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-921e392e-6c96-4a02-88a5-e9ac77b43cfa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_port.TestListPorts.test_get_custom_fields_physical_network_upgrade [0.082501s] ... 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-c5469d6b-47a4-4ae1-9338-8b3915fc5396 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.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_locked [0.105573s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_008_nodes_get_node_reader [0.076678s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-785cfe2d-dd54-47f0-8adf-563a2cfadc17 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": "2026-04-12T07:47:20.294648+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.controllers.v1.test_port.TestListPorts.test_get_one [0.044983s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6be71256-a346-45bd-b974-0a9cb15412e9 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": "2026-04-12T07:47:20.337937+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_073_nodes_vendor_passthru_post_admin [0.080144s] ... 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-a4ef4e12-9952-4014-8be3-30881a6e77b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_009_nodes_get_node_other_admin ... SKIPPED: Not implemented yet {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_custom_fields [0.042429s] ... 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-65509528-e992-4db0-b6e6-4f905e64ad6f 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.conductor.test_base_manager.StartConsolesTestCase.test__start_consoles_node_not_found [0.094865s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_get_one_portgroup_is_none [0.052691s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3dad327a-398f-4de9-8896-9adad3fe16f2 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": "2026-04-12T07:47:20.434022+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} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_074_nodes_vendor_passthru_post_member [0.095055s] ... 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-7afcb8db-dc0f-4968-875d-345f22cb0001 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_010_nodes_get_admin [0.075961s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-73d75d80-5c0b-43db-90a8-6b24e09c6cd7 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": "7959e434-83cb-4c95-8612-ec5c553aaf76", "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.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_advanced_net [0.050685s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aa97c5fb-358a-4362-ac99-584c8ddc3d15 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": "2026-04-12T07:47:20.479477+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-e385a11e-83c1-4bd4-b7f4-6e44bb4664fb 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": "2026-04-12T07:47:20.479477+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"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_075_nodes_vendor_passthru_post_observer [0.070003s] ... 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-9ccd9407-b497-4a43-88c1-bc9d96b22ab2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_011_nodes_get_service [0.080947s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b2ebd717-2758-4cc8-9506-8194975b6536 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": "6a4384ae-94b8-475d-a427-1455de42bc86", "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.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_internal_info [0.057920s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d058f5e3-b5b0-4992-baf8-878d60baa73a 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": "2026-04-12T07:47:20.534982+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-33911fac-b542-4309-a793-9d1b4d86f4c6 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": "2026-04-12T07:47:20.534982+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_port.TestListPorts.test_hide_fields_in_newer_versions_is_smartnic [0.051565s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a0e4a630-c33d-4414-afe3-a62898c0c768 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": "2026-04-12T07:47:20.590466+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-60cb7446-e639-4a51-a2a7-a23cea012d09 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": "2026-04-12T07:47:20.590466+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} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_012_nodes_get_service_project [0.077637s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3bf5e38f-fb56-4e56-a03e-c2f86d968ed2 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": "ab559950-8542-40a6-b427-3b79eaadbcff", "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.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_ovn_vtep [0.061886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0997a01c-2c49-4daf-9331-f752500f97bc 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": "2026-04-12T07:47:20.639927+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-0f2fa892-7f82-48be-bd9a-27e97d097b7c 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": "2026-04-12T07:47:20.639927+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-d33a37ad-4c74-43b9-a548-4445f6a8c6ca 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": "2026-04-12T07:47:20.639927+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} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_076_nodes_vendor_passthru_put_admin [0.159534s] ... 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-1dd7ca6d-af57-4d16-bdd4-2e48b3d5c88c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_013_nodes_get_service_project_disabled [0.075241s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c38e9e6f-efb4-4706-ba8c-19409c40a4f5 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.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network [0.050728s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-00ce89bf-f893-4529-847b-dff5408ba245 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": "2026-04-12T07:47:20.702881+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-aa92b43c-a1b9-4d51-8be0-13463d86fc24 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": "2026-04-12T07:47:20.702881+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} {0} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestChildNodes.test_do_next_clean_step_with_children [0.336897s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_077_nodes_vendor_passthru_put_member [0.085637s] ... 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-f42e0af3-c6ed-4028-b663-06e6d3a0de04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_physical_network_upgrade [0.052730s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-24fc397d-dbe7-47d0-b902-253e2d841187 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": "2026-04-12T07:47:20.764174+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.test_acl.TestRBACScopedRequests.test_system_scoped_014_nodes_get_service_project_admin [0.062410s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7a031934-1a35-49c7-bf77-4bb3364dc5a7 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.api.controllers.v1.test_port.TestListPorts.test_hide_fields_in_newer_versions_portgroup_uuid [0.064781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-76301883-3e71-427f-9f6a-050371ab9342 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": "2026-04-12T07:47:20.813606+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-90cde344-4639-447d-b0fc-2a30431f3b0f 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": "2026-04-12T07:47:20.813606+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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_078_nodes_vendor_passthru_put_observer [0.079957s] ... 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-f9e20165-2aea-4f70-8b71-a1166f0c0446 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_015_nodes_get_other_admin ... SKIPPED: Not implemented yet {0} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestChildNodes.test_do_next_clean_step_with_children_by_uuid [0.121440s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links [0.060983s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/54b4a801-fa87-4e38-8294-fb19c2dd374a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c0bc0571-0187-4563-affb-f64dbe2a83ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "54b4a801-fa87-4e38-8294-fb19c2dd374a", "created_at": "2026-04-12T07:47:20.877692+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/54b4a801-fa87-4e38-8294-fb19c2dd374a", "rel": "self"}, {"href": "http://localhost/ports/54b4a801-fa87-4e38-8294-fb19c2dd374a", "rel": "bookmark"}]} GET /v1/ports/54b4a801-fa87-4e38-8294-fb19c2dd374a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5202980c-7950-47a0-aa00-1878999b85e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "54b4a801-fa87-4e38-8294-fb19c2dd374a", "created_at": "2026-04-12T07:47:20.877692+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/54b4a801-fa87-4e38-8294-fb19c2dd374a", "rel": "self"}, {"href": "http://localhost/ports/54b4a801-fa87-4e38-8294-fb19c2dd374a", "rel": "bookmark"}]} GET /ports/54b4a801-fa87-4e38-8294-fb19c2dd374a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-40d99ce5-6dfc-40a6-9df7-479da4c5f4af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "54b4a801-fa87-4e38-8294-fb19c2dd374a", "created_at": "2026-04-12T07:47:20.877692+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/54b4a801-fa87-4e38-8294-fb19c2dd374a", "rel": "self"}, {"href": "http://localhost/ports/54b4a801-fa87-4e38-8294-fb19c2dd374a", "rel": "bookmark"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_016_nodes_detail_get_admin [0.071926s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ea68232b-7a6b-4c85-85de-5708b71023d5 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": "2026-04-12T07:47:20.885081+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": "2026-04-12T07:47:20.886242+00:00", "updated_at": "2026-04-12T07:47:20.889774+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": "b2f1c0ee-45f2-4cb1-bec4-4d9daa6f2de1", "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": "b2f1c0ee-45f2-4cb1-bec4-4d9daa6f2de1", "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": "2026-04-12T07:47:20.904603+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.conductor.test_manager.BootDeviceTestCase.test_get_boot_device [0.041853s] ... ok {0} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_node_locked [0.031960s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_links_public_url [0.069031s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/4df67000-cf04-4af9-a3d9-4cbbd22e58c5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dec11ef9-8341-4801-aa1e-07933c38d6d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "created_at": "2026-04-12T07:47:20.940441+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/4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "rel": "self"}, {"href": "http://foo/ports/4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "rel": "bookmark"}]} GET /v1/ports/4df67000-cf04-4af9-a3d9-4cbbd22e58c5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-44ca8517-adf8-49c1-a117-88a7fb874389 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "created_at": "2026-04-12T07:47:20.940441+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/4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "rel": "self"}, {"href": "http://foo/ports/4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "rel": "bookmark"}]} GET /ports/4df67000-cf04-4af9-a3d9-4cbbd22e58c5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-23418bcf-f2bc-4c65-8294-5f1cab8ac66e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"uuid": "4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "created_at": "2026-04-12T07:47:20.940441+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/4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "rel": "self"}, {"href": "http://foo/ports/4df67000-cf04-4af9-a3d9-4cbbd22e58c5", "rel": "bookmark"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_017_nodes_detail_get_member [0.076705s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-16c634e9-1a92-429d-b57a-d4e9853e7a1b 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": "2026-04-12T07:47:20.959865+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": "2026-04-12T07:47:20.961086+00:00", "updated_at": "2026-04-12T07:47:20.964925+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": "bc71ab55-5fc3-4a7c-89b0-cdd73c07f877", "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": "bc71ab55-5fc3-4a7c-89b0-cdd73c07f877", "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": "2026-04-12T07:47:20.980117+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.conductor.test_manager.BootDeviceTestCase.test_get_boot_device_validate_fail [0.045919s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden [0.050830s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7d198b02-0503-4faa-91ff-98294cfd6175 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}"} {0} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_get_supported_boot_devices [0.040013s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_list_non_admin_forbidden_no_project [0.057202s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c0120444-c419-403c-ac3d-e1f5a4bf123c 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}"} {0} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device [0.047686s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_018_nodes_detail_get_reader [0.096964s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-81443dc2-bfac-4d76-8ec6-9931ff060e70 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": "2026-04-12T07:47:21.040521+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": "2026-04-12T07:47:21.041720+00:00", "updated_at": "2026-04-12T07:47:21.045456+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": "80e3ebc4-939c-4426-823f-4c7fbb32f29f", "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": "80e3ebc4-939c-4426-823f-4c7fbb32f29f", "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": "2026-04-12T07:47:21.075495+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.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_node_locked [0.036978s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_many [0.054859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f8d6f3e-9f03-4f68-8129-703ab1204476 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": "6217e844-6e99-45b1-b397-6c993ec9ffaa", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/6217e844-6e99-45b1-b397-6c993ec9ffaa", "rel": "self"}, {"href": "http://localhost/ports/6217e844-6e99-45b1-b397-6c993ec9ffaa", "rel": "bookmark"}]}, {"uuid": "801d624e-1bad-47aa-9074-3b79e0a1df1f", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/801d624e-1bad-47aa-9074-3b79e0a1df1f", "rel": "self"}, {"href": "http://localhost/ports/801d624e-1bad-47aa-9074-3b79e0a1df1f", "rel": "bookmark"}]}, {"uuid": "baecc872-7691-45e7-b93c-76561c92aaba", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/baecc872-7691-45e7-b93c-76561c92aaba", "rel": "self"}, {"href": "http://localhost/ports/baecc872-7691-45e7-b93c-76561c92aaba", "rel": "bookmark"}]}, {"uuid": "58b4d71f-c009-4fcc-8612-de833ec3394f", "address": "52:54:00:cf:2d:33", "links": [{"href": "http://localhost/v1/ports/58b4d71f-c009-4fcc-8612-de833ec3394f", "rel": "self"}, {"href": "http://localhost/ports/58b4d71f-c009-4fcc-8612-de833ec3394f", "rel": "bookmark"}]}, {"uuid": "53abb000-e6fb-4a2c-b569-039602b3e141", "address": "52:54:00:cf:2d:34", "links": [{"href": "http://localhost/v1/ports/53abb000-e6fb-4a2c-b569-039602b3e141", "rel": "self"}, {"href": "http://localhost/ports/53abb000-e6fb-4a2c-b569-039602b3e141", "rel": "bookmark"}]}]} {0} ironic.tests.unit.conductor.test_manager.BootDeviceTestCase.test_set_boot_device_validate_fail [0.043686s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_019_nodes_detail_get_service [0.080480s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a89ae81f-d49b-45bc-8d4c-b1ecb6ebce1c 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": "2026-04-12T07:47:21.134085+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": "2026-04-12T07:47:21.135367+00:00", "updated_at": "2026-04-12T07:47:21.139667+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": "f60f0da6-2733-4d5d-9095-7cec151cb236", "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": "f60f0da6-2733-4d5d-9095-7cec151cb236", "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": "2026-04-12T07:47:21.157654+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_079_nodes_vendor_passthru_delete_admin [0.328272s] ... 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-94be5b9d-0aa0-4dff-8158-d11e171a5c46 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_port.TestListPorts.test_many_non_admin [0.057497s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0bdc852f-105a-48a9-874d-a701f08aaca8 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": "e07e7186-079e-44fc-970f-a0af2a2bb67f", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/e07e7186-079e-44fc-970f-a0af2a2bb67f", "rel": "self"}, {"href": "http://localhost/ports/e07e7186-079e-44fc-970f-a0af2a2bb67f", "rel": "bookmark"}]}, {"uuid": "3036dcf6-f97d-4d9e-91fb-f300b1638df9", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/3036dcf6-f97d-4d9e-91fb-f300b1638df9", "rel": "self"}, {"href": "http://localhost/ports/3036dcf6-f97d-4d9e-91fb-f300b1638df9", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_one [0.037334s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d3af628a-d8df-4736-ba1e-94facae36eda 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.test_acl.TestRBACScopedRequests.test_system_scoped_020_nodes_node_ident_get_admin [0.084882s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd78deb6-7030-46e7-9771-5d30c9cb377c 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": "2026-04-12T07:47:21.228044+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_080_nodes_vendor_passthru_delete_member [0.094512s] ... 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-0a858928-f19c-4175-bcb8-a5a418e88109 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_port.TestListPorts.test_port_by_address [0.053997s] ... 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-f031a32d-cf3e-437b-a960-cbeffeab0d26 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": "25e1468a-3208-4ebe-ba08-21380ec066df", "address": "aa:bb:cc:dd:ee:f1", "links": [{"href": "http://localhost/v1/ports/25e1468a-3208-4ebe-ba08-21380ec066df", "rel": "self"}, {"href": "http://localhost/ports/25e1468a-3208-4ebe-ba08-21380ec066df", "rel": "bookmark"}]}]} {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_exception_in_background_task [0.123931s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_invalid_address_format [0.049473s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?address=invalid-mac-format WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3543fe05-88f4-47a2-ab4f-637dcbc44dd6 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}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_021_nodes_node_ident_get_member [0.075959s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5a3d21c6-5f46-4e83-92e6-23b14d363b7a 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": "2026-04-12T07:47:21.301378+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_081_nodes_vendor_passthru_delete_observer [0.092207s] ... 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-ffa351d8-0118-403b-9979-44d0d5dcb6fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_node_already_locked [0.093023s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin [0.064309s] ... 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-6dc4c5cf-284c-4bc9-83cf-39e94c2e755f 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": "00075c35-089c-4938-8f06-ba26e44f4a09", "address": "aa:bb:cc:dd:ee:f1", "links": [{"href": "http://localhost/v1/ports/00075c35-089c-4938-8f06-ba26e44f4a09", "rel": "self"}, {"href": "http://localhost/ports/00075c35-089c-4938-8f06-ba26e44f4a09", "rel": "bookmark"}]}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_022_nodes_node_ident_get_reader [0.077158s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7edb63c1-6c90-444d-a396-c85aeab32cc4 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": "2026-04-12T07:47:21.383935+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.controllers.v1.test_port.TestListPorts.test_port_by_address_non_admin_no_match [0.047328s] ... 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-fd10f4cf-35ec-49ca-97c3-fbf1bd2964ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": []} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_082_nodes_traits_get_admin [0.090155s] ... 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-8305feb0-fb85-49bd-b62c-efa80e39a519 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.controllers.v1.test_port.TestListPorts.test_port_by_address_non_existent_address [0.040791s] ... 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-0bf754f8-2552-465c-923e-7afe7bea6969 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.1 {"ports": []} {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_power_on [0.105495s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_invalid_ident [0.030725s] ... 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.test_acl.TestRBACScopedRequests.test_system_scoped_023_nodes_node_ident_patch_admin [0.108946s] ... 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-70e97c8e-0e27-4710-bb74-dd4539ae9f9f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_083_nodes_traits_get_member [0.101178s] ... 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-0962f5e9-d948-4016-9c1a-8df72bc638a2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_soft_power_off_timeout [0.114710s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_024_system_admin_can_patch_chassis [0.116258s] ... 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-672f0f18-d024-4b3a-866a-d287cda94335 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_unsupported_state [0.095329s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_084_nodes_traits_get_observer [0.144324s] ... 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-7d453375-51b8-45e6-bdf5-20504769fff9 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.controllers.v1.test_port.TestListPorts.test_portgroups_subresource_node_not_found [0.258713s] ... 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\": \"\"}"} {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_validate_fail [0.092614s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_085_nodes_traits_put_admin [0.092532s] ... 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-f4dca348-1918-4561-be48-786d98a416ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_025_system_member_can_patch_conductor_group [0.186647s] ... 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-9d921c54-a096-4862-96c9-f46cdf92b2da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_port.TestListPorts.test_sort_key [0.049966s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f48ea6a7-5d09-4fe4-8e49-196f30f95e90 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": "4512030c-1940-4149-8ec0-119c7d4b975c", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/4512030c-1940-4149-8ec0-119c7d4b975c", "rel": "self"}, {"href": "http://localhost/ports/4512030c-1940-4149-8ec0-119c7d4b975c", "rel": "bookmark"}]}, {"uuid": "5bbf2f35-8de1-4213-91f7-7aa13896c202", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/ports/5bbf2f35-8de1-4213-91f7-7aa13896c202", "rel": "self"}, {"href": "http://localhost/ports/5bbf2f35-8de1-4213-91f7-7aa13896c202", "rel": "bookmark"}]}, {"uuid": "a435de58-ad0f-4aa2-aba9-92b92e15f41e", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/a435de58-ad0f-4aa2-aba9-92b92e15f41e", "rel": "self"}, {"href": "http://localhost/ports/a435de58-ad0f-4aa2-aba9-92b92e15f41e", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_allowed [0.063501s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?sort_key=pxe_enabled WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5387129d-8d23-4305-9509-7c764b336e93 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": "cd75345f-982c-430f-a9e6-a06c811a04e7", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/cd75345f-982c-430f-a9e6-a06c811a04e7", "rel": "self"}, {"href": "http://localhost/ports/cd75345f-982c-430f-a9e6-a06c811a04e7", "rel": "bookmark"}]}, {"uuid": "7baca9f4-720f-4930-8ef6-485cb51ffc2a", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/7baca9f4-720f-4930-8ef6-485cb51ffc2a", "rel": "self"}, {"href": "http://localhost/ports/7baca9f4-720f-4930-8ef6-485cb51ffc2a", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_086_nodes_traits_put_member [0.102772s] ... 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-7e9de31f-d91d-4fa0-8e0f-96e3c21af08f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.conductor.test_manager.ChangeNodePowerStateTestCase.test_change_node_power_state_worker_pool_full [0.110107s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_port.TestListPorts.test_sort_key_invalid [0.039412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-74ac8521-fc02-4855-b5e5-e8ea262ce864 X-Openstack-Ironic-Api-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-9e6f84b9-84a8-4b5c-8e9e-3532b5ebe90b X-Openstack-Ironic-Api-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-911cd33e-2ac3-46c7-a68c-89c0b52c0cf1 X-Openstack-Ironic-Api-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-0a3d6812-f6ba-47de-8a21-14d0fcec3ee6 X-Openstack-Ironic-Api-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_port.TestListPorts.test_sort_key_not_allowed [0.032915s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports?sort_key=pxe_enabled WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-c877731f-3ccc-4bca-9d33-8b75152bcdb3 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_portgroup.TestDelete.test_delete_portgroup_byaddress [0.039691s] ... 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.test_acl.TestRBACScopedRequests.test_system_scoped_026_nodes_node_ident_patch_member [0.189306s] ... 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-804cc596-488f-4e57-880f-cdde29a2996e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byid [0.045392s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 204 No Content Openstack-Request-Id: req-8469b053-7ccf-4687-a4e3-bfa5e604ac8c 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_087_nodes_traits_put_observer [0.149792s] ... 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-bc0fbf81-1f45-4ad7-a413-2372a1c1b61e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_get_power_fail [0.151052s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname [0.040939s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/pg.1 GOT Response: 204 No Content Openstack-Request-Id: req-89277426-4027-4983-b147-f8785519777c 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_portgroup.TestDelete.test_delete_portgroup_byname_not_existed [0.046706s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/blah GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8c21010a-14e1-441c-ad5f-90e03c7f78b7 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_027_nodes_node_ident_patch_service [0.141929s] ... 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-98552b5b-f656-44fd-ad4e-9f145bd8a5cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_088_nodes_traits_delete_admin [0.123681s] ... 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-9f76de82-4417-4184-b676-a19c4818dc3e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_byname_with_json [0.051221s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/pg.1.json GOT Response: 204 No Content Openstack-Request-Id: req-33a0e569-ec52-4182-86f6-1ae3adbb0e25 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.90 {0} ironic.tests.unit.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_no_state_change [0.140501s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_invalid_api_version [0.038463s] ... 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\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestDelete.test_delete_portgroup_node_locked [0.051199s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-4148d69f-97ff-47a2-9868-af2b095d39c3 X-Openstack-Ironic-Api-Maximum-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.test_acl.TestRBACScopedRequests.test_system_scoped_028_nodes_node_ident_patch_service_project [0.128973s] ... 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-12022c19-059d-45e4-a184-de472c529100 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_089_nodes_traits_delete_member [0.119113s] ... 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-1db87087-51d3-4a0e-af96-c2f9a46d06ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_set_power_fail [0.129246s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links [0.059969s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/?limit=3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4758aa22-e69e-404e-9439-6d957526a551 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": "7fb676b9-5029-4061-9fb1-0b075a1ed801", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/7fb676b9-5029-4061-9fb1-0b075a1ed801", "rel": "self"}, {"href": "http://localhost/portgroups/7fb676b9-5029-4061-9fb1-0b075a1ed801", "rel": "bookmark"}]}, {"uuid": "30d311cf-8161-47f9-bceb-afa1c47126c3", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/30d311cf-8161-47f9-bceb-afa1c47126c3", "rel": "self"}, {"href": "http://localhost/portgroups/30d311cf-8161-47f9-bceb-afa1c47126c3", "rel": "bookmark"}]}, {"uuid": "599cb846-bc23-4e84-97cf-9c3b8baf4d90", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/599cb846-bc23-4e84-97cf-9c3b8baf4d90", "rel": "self"}, {"href": "http://localhost/portgroups/599cb846-bc23-4e84-97cf-9c3b8baf4d90", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=3&marker=599cb846-bc23-4e84-97cf-9c3b8baf4d90"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_029_nodes_node_ident_patch_reader [0.083500s] ... 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-038999f4-8706-4ec0-aa9b-fab1061bf2b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_custom_fields [0.062452s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?fields=address,uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0c3eef37-d5ac-4171-ac40-028be3bdad63 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": "586be567-4851-4acd-b837-933ca81bf20b", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/portgroups/586be567-4851-4acd-b837-933ca81bf20b", "rel": "self"}, {"href": "http://localhost/portgroups/586be567-4851-4acd-b837-933ca81bf20b", "rel": "bookmark"}]}, {"uuid": "40e123e7-2bc6-41d1-8d25-7aefb857bbe4", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/portgroups/40e123e7-2bc6-41d1-8d25-7aefb857bbe4", "rel": "self"}, {"href": "http://localhost/portgroups/40e123e7-2bc6-41d1-8d25-7aefb857bbe4", "rel": "bookmark"}]}, {"uuid": "b4c45d67-4a65-4317-a4b1-1a3fac1a5842", "address": "52:54:00:cf:2d:32", "links": [{"href": "http://localhost/v1/portgroups/b4c45d67-4a65-4317-a4b1-1a3fac1a5842", "rel": "self"}, {"href": "http://localhost/portgroups/b4c45d67-4a65-4317-a4b1-1a3fac1a5842", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=address,uuid&limit=3&marker=b4c45d67-4a65-4317-a4b1-1a3fac1a5842"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_090_nodes_traits_delete_observer [0.110021s] ... 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-2837190f-f9d5-4506-862d-4d35bdada9c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_030_nodes_node_ident_delete_admin [0.085037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4fcb3761-63aa-4f34-950b-867a12e42eff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_spawn_fail [0.150993s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_collection_links_default_limit [0.085658s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-debe2241-cd87-4618-a464-a1a6418cd732 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": "b8839af2-c29c-42a9-b19b-e66c794151d4", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/b8839af2-c29c-42a9-b19b-e66c794151d4", "rel": "self"}, {"href": "http://localhost/portgroups/b8839af2-c29c-42a9-b19b-e66c794151d4", "rel": "bookmark"}]}, {"uuid": "275623ad-016f-428e-abe1-409b5a924c12", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/275623ad-016f-428e-abe1-409b5a924c12", "rel": "self"}, {"href": "http://localhost/portgroups/275623ad-016f-428e-abe1-409b5a924c12", "rel": "bookmark"}]}, {"uuid": "4c7a9745-a299-4801-8d24-0c1a95b52fdf", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/4c7a9745-a299-4801-8d24-0c1a95b52fdf", "rel": "self"}, {"href": "http://localhost/portgroups/4c7a9745-a299-4801-8d24-0c1a95b52fdf", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=uuid,address,name&limit=3&marker=4c7a9745-a299-4801-8d24-0c1a95b52fdf"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_091_nodes_traits_trait_put_admin [0.098755s] ... 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-58263d38-f7dc-4fc2-a635-912f321668bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_031_nodes_node_ident_delete_service [0.089264s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f573f705-0b03-4439-818b-dd2db0b275e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_portgroup.TestListPortgroups.test_detail [0.094588s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8a9d459b-634d-4026-b28c-3891c22a0716 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": "2026-04-12T07:47:22.569741+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_092_nodes_traits_trait_put_member [0.082820s] ... 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-b4a074fc-b718-4301-b11b-ab52a6edb4cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_032_nodes_node_ident_delete_member [0.081864s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-242a02fd-edfe-4aa2-8c36-21cde6d3f8da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_portgroup.TestListPortgroups.test_detail_against_single [0.067139s] ... 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-ace0169b-7e6b-4b95-80b6-2a9ab6a7ecd3 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_093_nodes_traits_trait_put_observer [0.084163s] ... 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-19c063f9-c6b6-41b2-bb29-d615bc27a731 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_portgroup.TestListPortgroups.test_detail_by_node_name_ok [0.041388s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2d51eebf-132c-40c7-a81f-b9e5651dac4e 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": "2026-04-12T07:47:22.697719+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_portgroup.TestListPortgroups.test_detail_invalid_api_version [0.029930s] ... 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_094_nodes_traits_trait_delete_admin [0.078368s] ... 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-81cda944-faeb-4f49-beff-edb0b494d3ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_detail_query [0.058153s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?detail=True WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d96a52ad-fc98-488c-8e77-8a3eb1997ab5 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": "2026-04-12T07:47:22.784379+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_portgroup.TestListPortgroups.test_detail_query_false [0.047706s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ebb7143f-70fc-4f0f-ad44-6dc6d246eafa 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-86e84470-0400-462b-a2f4-5991d6b3f661 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.conductor.test_manager.ChangeNodePowerStateTestCase.test_node_set_power_state_notif_success [0.356301s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_095_nodes_traits_trait_delete_member [0.072694s] ... 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-7488bbb1-1b37-4f35-a1f8-c237221d7ae0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_allowed [0.056675s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail?sort_key=mode WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0ec9d5e5-321a-4537-9a1c-7cebb67e09f7 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": "8e8cd852-ca09-4854-b033-768c63a096f6", "created_at": "2026-04-12T07:47:22.890951+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/8e8cd852-ca09-4854-b033-768c63a096f6", "rel": "self"}, {"href": "http://localhost/portgroups/8e8cd852-ca09-4854-b033-768c63a096f6", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/8e8cd852-ca09-4854-b033-768c63a096f6/ports", "rel": "self"}, {"href": "http://localhost/portgroups/8e8cd852-ca09-4854-b033-768c63a096f6/ports", "rel": "bookmark"}]}, {"uuid": "1d0b1b23-6510-44e3-9ea9-26858671a721", "created_at": "2026-04-12T07:47:22.880230+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/1d0b1b23-6510-44e3-9ea9-26858671a721", "rel": "self"}, {"href": "http://localhost/portgroups/1d0b1b23-6510-44e3-9ea9-26858671a721", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/1d0b1b23-6510-44e3-9ea9-26858671a721/ports", "rel": "self"}, {"href": "http://localhost/portgroups/1d0b1b23-6510-44e3-9ea9-26858671a721/ports", "rel": "bookmark"}]}, {"uuid": "2212ce7e-b8e7-41e7-be4e-a34577368a40", "created_at": "2026-04-12T07:47:22.876421+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/2212ce7e-b8e7-41e7-be4e-a34577368a40", "rel": "self"}, {"href": "http://localhost/portgroups/2212ce7e-b8e7-41e7-be4e-a34577368a40", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/2212ce7e-b8e7-41e7-be4e-a34577368a40/ports", "rel": "self"}, {"href": "http://localhost/portgroups/2212ce7e-b8e7-41e7-be4e-a34577368a40/ports", "rel": "bookmark"}]}]} {0} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_disable_console_already_disabled [0.084603s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_096_nodes_traits_trait_delete_observer [0.086232s] ... 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-1b5dbaca-38a6-424c-87b8-34e905cfc31c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_portgroup.TestListPortgroups.test_detail_sort_key_not_allowed [0.045362s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail?sort_key=mode WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-a43c98a8-b635-4d33-a926-38c05844e57d 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.test_acl.TestRBACScopedRequests.test_system_scoped_033_nodes_node_ident_delete_reader [0.338905s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ddf4f0bc-713d-4eb6-85b1-3670c103cb29 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_and_fields [0.035819s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?detail=True&fields=name WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-de260072-e839-41fa-a3f1-7c9a5e47afb9 X-Openstack-Ironic-Api-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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_097_nodes_vifs_get_admin [0.089602s] ... 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-85a298b0-8340-4abb-aec6-7d626b4dac2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.ConsoleTestCase.test_enable_console_already_enabled [0.099193s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_false_and_fields [0.057167s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?detail=False&fields=internal_info WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2f3ec792-363d-422c-b5fc-da9fa451a2fa 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"}]}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_034_nodes_validate_get_admin [0.078921s] ... 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-3aac65a8-d6f1-49b8-9afe-a438b097f360 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_detail_using_query_old_version [0.046858s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?detail=True WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-cff25094-de7e-4427-8bf5-aade4c9da1ff 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}"} {0} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console [0.055354s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_098_nodes_vifs_get_member [0.082390s] ... 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-fd95444b-9fab-42a1-b420-3f3ffc842b43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_portgroup.TestListPortgroups.test_empty [0.034209s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e4913967-49c4-4b48-b580-b44d36110754 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"portgroups": []} {0} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_get_console_disabled [0.034826s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_035_nodes_validate_get_member [0.078152s] ... 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-324d4acf-7042-426f-94bd-2c4ab91923e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.ConsoleTestCase.test_get_console_validate_fail [0.037246s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_name_ok [0.065886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?node=test-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1335796d-5cb2-4081-825d-17de46bdd6eb 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": "07379f77-d720-464f-9e85-884099267f82", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/07379f77-d720-464f-9e85-884099267f82", "rel": "self"}, {"href": "http://localhost/portgroups/07379f77-d720-464f-9e85-884099267f82", "rel": "bookmark"}]}, {"uuid": "ee777464-9ff0-4aa0-b535-b3b636829dc6", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/ee777464-9ff0-4aa0-b535-b3b636829dc6", "rel": "self"}, {"href": "http://localhost/portgroups/ee777464-9ff0-4aa0-b535-b3b636829dc6", "rel": "bookmark"}]}, {"uuid": "c05f5773-fb6a-49f3-a48a-0245a93822b4", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/c05f5773-fb6a-49f3-a48a-0245a93822b4", "rel": "self"}, {"href": "http://localhost/portgroups/c05f5773-fb6a-49f3-a48a-0245a93822b4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_099_nodes_vifs_get_observer [0.079585s] ... 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-91cdaeac-129c-4659-9176-03ce9b33c241 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_036_nodes_validate_get_service [0.070713s] ... 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-e948cf14-b43e-49bc-9800-9025d26e6815 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_by_node_uuid_ok [0.043354s] ... 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-c4bf7507-24e4-4e0f-93a0-9c4df3e53b12 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": "2026-04-12T07:47:23.227074+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_100_nodes_vifs_post_admin [0.079372s] ... 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-c5d73ec7-0c24-4cb9-a86c-0ef7a3d8d242 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_037_nodes_validate_get_service_project [0.066914s] ... 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-a0dc0c1f-78a4-4d2d-bb03-a463d15cef6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_get_all_ports_by_portgroup_uuid [0.062481s] ... 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-1743c8c5-d4b2-40cb-9055-a403e5e00dfc 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"}]}]} {0} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_disabled [0.147339s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_038_nodes_validate_get_reader [0.070993s] ... 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-f4150b9c-903d-41f1-b24f-f64c6173467d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_101_nodes_vifs_post_member [0.077718s] ... 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-e14b944c-1554-4382-b112-db3ff6c5a98a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_custom_fields [0.084409s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?fields=uuid,extra WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e5d1eda1-4316-4342-ad41-fabcdd8d4d45 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": "3f3334f5-580a-43eb-ab46-6991712b3608", "extra": {}, "links": [{"href": "http://localhost/v1/portgroups/3f3334f5-580a-43eb-ab46-6991712b3608", "rel": "self"}, {"href": "http://localhost/portgroups/3f3334f5-580a-43eb-ab46-6991712b3608", "rel": "bookmark"}]}, {"uuid": "f3348438-d41a-407b-b83b-2775aab53594", "extra": {}, "links": [{"href": "http://localhost/v1/portgroups/f3348438-d41a-407b-b83b-2775aab53594", "rel": "self"}, {"href": "http://localhost/portgroups/f3348438-d41a-407b-b83b-2775aab53594", "rel": "bookmark"}]}, {"uuid": "237c994e-8c76-47d3-a4a5-f66881396429", "extra": {}, "links": [{"href": "http://localhost/v1/portgroups/237c994e-8c76-47d3-a4a5-f66881396429", "rel": "self"}, {"href": "http://localhost/portgroups/237c994e-8c76-47d3-a4a5-f66881396429", "rel": "bookmark"}]}]} {0} ironic.tests.unit.conductor.test_manager.ConsoleTestCase.test_set_console_mode_enabled [0.104157s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_039_nodes_maintenance_put_admin [0.069437s] ... 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-f45b0af2-d5bd-4558-8720-b9dcd832e496 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_pagination_no_uuid [0.050374s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?fields=address&limit=2 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3a5019f0-3660-40f6-8e63-f1bb7ef625f0 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/236409c4-e9a1-455d-8d67-f7b4bbf37055", "rel": "self"}, {"href": "http://localhost/portgroups/236409c4-e9a1-455d-8d67-f7b4bbf37055", "rel": "bookmark"}]}, {"address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/portgroups/9d625347-8214-4e71-a2e2-e5fa8dfe1f2f", "rel": "self"}, {"href": "http://localhost/portgroups/9d625347-8214-4e71-a2e2-e5fa8dfe1f2f", "rel": "bookmark"}]}], "next": "http://localhost/v1/portgroups?sort_key=id&sort_dir=asc&fields=address&limit=2&marker=9d625347-8214-4e71-a2e2-e5fa8dfe1f2f"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_102_nodes_vifs_post_observer [0.083957s] ... 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-b050d508-bc3d-4709-9b8c-2fb75f82d53b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_collection_properties_field_lower_api_version [0.042646s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/?fields=address,properties WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-97725e60-0443-4097-8089-a7caf0bbcd92 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.test_acl.TestRBACScopedRequests.test_system_scoped_040_nodes_maintenance_put_member [0.075606s] ... 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-2ccd76e7-3db6-4be4-9978-b3994fa3b224 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_get_custom_fields_invalid_fields [0.045391s] ... 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-ab787802-b90b-4580-b54b-6f198ea1ac42 X-Openstack-Ironic-Api-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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin [0.086829s] ... 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-31123790-7b42-49dc-bfc9-b80c593dd217 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.ConsoleTestCase.test_set_console_mode_start_fail [0.113252s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_041_nodes_maintenance_put_reader [0.079248s] ... 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-27217599-83e3-4d1e-af10-9efcec22521a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one [0.065651s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-11d1a32d-2beb-4a29-8b6e-848b863e0a9c 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": "2026-04-12T07:47:23.566685+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_104_nodes_vifs_node_vif_ident_delete_member [0.084248s] ... 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-9d5fae57-c132-4a19-848d-b9a5ea246404 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.conductor.test_manager.ConsoleTestCase.test_set_console_mode_stop_fail [0.119336s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_custom_fields [0.059562s] ... 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-c4cdea7e-1407-44fc-abfe-2f8c648de5a3 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"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_042_nodes_maintenance_delete_admin [0.079786s] ... 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-a66034f4-f473-4844-bf7a-f542e48e9330 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_invalid_api_version [0.037003s] ... 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer [0.078103s] ... 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-a2818c82-9c51-4c45-9d7e-9cb04b8cfda7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_043_nodes_maintenance_delete_member [0.085182s] ... 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-4b8bfcdd-c3fa-44b9-8a05-e7ec14988e5c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.ConsoleTestCase.test_set_console_mode_validation_fail [0.095198s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_mode_field_lower_api_version [0.058295s] ... 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-fc4bad88-88a2-4d05-bed8-f5f8535922bc 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_106_nodes_management_indicators_get_admin [0.076525s] ... 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-27d2b3b5-08cc-4136-8152-22c84d866135 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_double_json_in_name [0.041146s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-636b33c7-2290-40bc-a76a-a05381012521 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": "2026-04-12T07:47:23.775601+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"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_044_nodes_maintenance_delete_reader [0.079894s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/maintenance GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b5ef6148-861a-4584-a461-e8ec5d9a2b4b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.ConsoleTestCase.test_set_console_mode_worker_pool_full [0.099292s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json [0.056650s] ... 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-ff9bddd8-f06a-41b5-ae6d-5e9ed0022684 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": "2026-04-12T07:47:23.819377+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_107_nodes_management_indicators_get_member [0.104820s] ... 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-6e4bdcc9-5e4f-4f5e-a36c-0b4bf3767a9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.conductor.test_manager.CreateNodeTestCase.test_create_node [0.035615s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json_in_name [0.043981s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7cc7ff0d-614c-45fb-afe0-2d5aa358b596 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": "2026-04-12T07:47:23.876151+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.test_acl.TestRBACScopedRequests.test_system_scoped_045_nodes_management_boot_device_put_admin [0.081777s] ... 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-eb480673-cd05-450c-b243-f2871f2ea240 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.CreateNodeTestCase.test_create_node_validation_fails [0.029606s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_json_not_found [0.035252s] ... 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-c137a73f-89b0-4d6b-8563-e315498fe51a X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port [0.050881s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_get_one_with_suffix [0.048082s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a4f6e80a-5840-434d-8d38-855d5800fd46 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": "2026-04-12T07:47:23.961710+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.test_acl.TestRBACScopedRequests.test_system_scoped_046_nodes_management_boot_device_put_member [0.075253s] ... 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-aa60cc8c-5b85-4783-90bd-15c3c6350911 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_108_nodes_management_indicators_get_observer [0.107566s] ... 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-15c37841-eed7-4a13-bcf7-33bf63d3f99f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.CreatePortTestCase.test_create_port_mac_exists [0.052257s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_links [0.073479s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-40c0f962-7798-4686-8072-cfcaa805aa83 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8cd239a2-8b76-4e09-ab0a-9985258afd42", "created_at": "2026-04-12T07:47:24.015819+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/8cd239a2-8b76-4e09-ab0a-9985258afd42", "rel": "self"}, {"href": "http://localhost/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42/ports", "rel": "self"}, {"href": "http://localhost/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42/ports", "rel": "bookmark"}]} GET /v1/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f4f7d9aa-573d-4822-9a13-889c93c23704 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8cd239a2-8b76-4e09-ab0a-9985258afd42", "created_at": "2026-04-12T07:47:24.015819+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/8cd239a2-8b76-4e09-ab0a-9985258afd42", "rel": "self"}, {"href": "http://localhost/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42/ports", "rel": "self"}, {"href": "http://localhost/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42/ports", "rel": "bookmark"}]} GET /portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-eee8662e-88b4-41ee-97b0-6deb8729f657 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8cd239a2-8b76-4e09-ab0a-9985258afd42", "created_at": "2026-04-12T07:47:24.015819+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/8cd239a2-8b76-4e09-ab0a-9985258afd42", "rel": "self"}, {"href": "http://localhost/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42/ports", "rel": "self"}, {"href": "http://localhost/portgroups/8cd239a2-8b76-4e09-ab0a-9985258afd42/ports", "rel": "bookmark"}]} {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. {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_047_nodes_management_boot_device_put_reader [0.069722s] ... 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-59dd72ec-575d-47dd-a27c-c48a12b7a34f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_conflict [0.036641s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_many [0.051178s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-158c28c2-9025-40d7-b703-0c2013c70232 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": "17712d82-f81c-44cf-9f0b-44e86552dba0", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/17712d82-f81c-44cf-9f0b-44e86552dba0", "rel": "self"}, {"href": "http://localhost/portgroups/17712d82-f81c-44cf-9f0b-44e86552dba0", "rel": "bookmark"}]}, {"uuid": "eff93f7f-adb1-48b1-8df1-bb2bb3ee1dda", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/eff93f7f-adb1-48b1-8df1-bb2bb3ee1dda", "rel": "self"}, {"href": "http://localhost/portgroups/eff93f7f-adb1-48b1-8df1-bb2bb3ee1dda", "rel": "bookmark"}]}, {"uuid": "6351d5fb-f208-4664-9854-cb8d9f26cd2e", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/6351d5fb-f208-4664-9854-cb8d9f26cd2e", "rel": "self"}, {"href": "http://localhost/portgroups/6351d5fb-f208-4664-9854-cb8d9f26cd2e", "rel": "bookmark"}]}, {"uuid": "e6d08c89-5dee-440e-ba6f-371a706b7e1f", "address": "52:54:00:cf:2d:33", "name": "portgroup3", "links": [{"href": "http://localhost/v1/portgroups/e6d08c89-5dee-440e-ba6f-371a706b7e1f", "rel": "self"}, {"href": "http://localhost/portgroups/e6d08c89-5dee-440e-ba6f-371a706b7e1f", "rel": "bookmark"}]}, {"uuid": "4136cb32-f5be-4ab1-9c0d-fbd64102fe4f", "address": "52:54:00:cf:2d:34", "name": "portgroup4", "links": [{"href": "http://localhost/v1/portgroups/4136cb32-f5be-4ab1-9c0d-fbd64102fe4f", "rel": "self"}, {"href": "http://localhost/portgroups/4136cb32-f5be-4ab1-9c0d-fbd64102fe4f", "rel": "bookmark"}]}]} {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.conductor.test_manager.CreatePortTestCase.test_create_port_physnet_validation_failure_inconsistent [0.070307s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_one [0.047376s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ea5e71bb-1e4c-4c15-8288-97d3d5fb157b 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_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.api.test_acl.TestRBACScopedRequests.test_system_scoped_048_nodes_management_boot_device_get_admin [0.143278s] ... 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-b21093ac-a397-472b-9df3-c6a36a30a086 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address [0.050524s] ... 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-efcdd45c-9d03-4890-a439-88e8eb5c2f20 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": "34992fee-e406-4873-a6a0-f8ba3c404b87", "address": "aa:bb:cc:dd:ee:f1", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/34992fee-e406-4873-a6a0-f8ba3c404b87", "rel": "self"}, {"href": "http://localhost/portgroups/34992fee-e406-4873-a6a0-f8ba3c404b87", "rel": "bookmark"}]}]} {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port [0.100334s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_by_address_invalid_address_format [0.035850s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?address=invalid-mac-format WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-f3e9bf15-dbf4-4ba9-8c2c-c27e3a0fd5ec X-Openstack-Ironic-Api-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_portgroup.TestListPortgroups.test_portgroup_by_address_non_existent_address [0.043996s] ... 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-0b8ff071-b8d2-4fb1-9618-2668da3ac255 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.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_112_portgroups_get_admin [0.097419s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-63b134a6-147e-4ad0-9159-4ca9c1ecf683 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.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_no_vif [0.074606s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_049_nodes_management_boot_device_get_member [0.153363s] ... 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-5ad9ffe1-5d62-42ae-97f4-270a7c72b0e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_and_maintenance_vif_present [0.050272s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_port_unbound [0.045111s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_113_portgroups_get_member [0.141273s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ab2897b5-acae-46aa-9a1c-c86de6bd1fd0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_active_state [0.054716s] ... ok {0} ironic.tests.unit.conductor.test_manager.DestroyPortTestCase.test_destroy_port_node_locked [0.035851s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_050_nodes_management_boot_device_get_reader [0.146965s] ... 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-177f5c2e-7b1c-414e-9225-aa076f9bdfc3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_portgroup.TestListPortgroups.test_portgroup_get_all_invalid_api_version [0.250338s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-768b03e7-904c-46a4-ad7e-aab97bfb3782 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.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_bound [0.047111s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_114_portgroups_get_observer [0.141592s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f1f15e3-de8d-4ef4-9973-8b1a7e747db3 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.conductor.test_manager.DestroyPortTestCase.test_destroy_port_with_instance_not_in_active_port_unbound [0.060589s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_051_nodes_management_boot_device_supported_get_admin [0.121039s] ... 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-363ccf8b-27ff-4df8-a698-b4d370f773d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource [0.113300s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/62e9439d-d4fe-481f-a9e2-a5a66b76ecf2/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ddd7971b-1850-4e56-bc46-877fe6d5b3ee 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": "4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "rel": "self"}, {"href": "http://localhost/ports/4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "rel": "bookmark"}]}, {"uuid": "057683d4-b598-42a5-a4d7-64bcb1ae2ab4", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/057683d4-b598-42a5-a4d7-64bcb1ae2ab4", "rel": "self"}, {"href": "http://localhost/ports/057683d4-b598-42a5-a4d7-64bcb1ae2ab4", "rel": "bookmark"}]}]} GET /v1/portgroups/62e9439d-d4fe-481f-a9e2-a5a66b76ecf2/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a96ceab4-1bd8-40aa-8a18-90075dc5fe0c 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": "4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "created_at": "2026-04-12T07:47:24.565314+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/4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "rel": "self"}, {"href": "http://localhost/ports/4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "rel": "bookmark"}], "portgroup_uuid": "62e9439d-d4fe-481f-a9e2-a5a66b76ecf2"}, {"uuid": "057683d4-b598-42a5-a4d7-64bcb1ae2ab4", "created_at": "2026-04-12T07:47:24.569101+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/057683d4-b598-42a5-a4d7-64bcb1ae2ab4", "rel": "self"}, {"href": "http://localhost/ports/057683d4-b598-42a5-a4d7-64bcb1ae2ab4", "rel": "bookmark"}], "portgroup_uuid": "62e9439d-d4fe-481f-a9e2-a5a66b76ecf2"}]} GET /v1/portgroups/62e9439d-d4fe-481f-a9e2-a5a66b76ecf2/ports?limit=1 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-150d8be6-b760-414f-8ba8-a9d34f342d85 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": "4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "address": "52:54:00:cf:2d:30", "links": [{"href": "http://localhost/v1/ports/4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "rel": "self"}, {"href": "http://localhost/ports/4cdb3eee-6879-43c1-aef1-1bf50f29ce69", "rel": "bookmark"}]}], "next": "http://localhost/v1/ports?sort_key=id&sort_dir=asc&fields=uuid,address&limit=1&marker=4cdb3eee-6879-43c1-aef1-1bf50f29ce69"} GET /v1/portgroups/62e9439d-d4fe-481f-a9e2-a5a66b76ecf2/ports/ef46aadc-0ff6-4c43-ad27-804037249ac1 WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} GET /v1/portgroups/62e9439d-d4fe-481f-a9e2-a5a66b76ecf2/ports/95479881-e5ce-4138-8ab0-6a55dda5c236 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-014c649b-a147-4d54-a7cc-2bd1a7dcc786 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector [0.048293s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_115_portgroups_post_admin [0.084619s] ... 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/41e49938-3782-49b1-ac66-dcf9aa5200fd Openstack-Request-Id: req-08fd163e-c864-44f3-9282-9a8c5a0833b6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "41e49938-3782-49b1-ac66-dcf9aa5200fd", "created_at": "2026-04-12T07:47:24.649888+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/41e49938-3782-49b1-ac66-dcf9aa5200fd", "rel": "self"}, {"href": "http://localhost/portgroups/41e49938-3782-49b1-ac66-dcf9aa5200fd", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/41e49938-3782-49b1-ac66-dcf9aa5200fd/ports", "rel": "self"}, {"href": "http://localhost/portgroups/41e49938-3782-49b1-ac66-dcf9aa5200fd/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_locked [0.041153s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_052_nodes_management_boot_device_supported_get_member [0.078271s] ... 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-d9fb62cb-feaa-4f8f-91c1-dce55cc08ba9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_no_portgroups_allowed [0.080200s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/3f7d7d5b-b649-4200-949e-4900c04f4746/ports 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.TestRBACModelBeforeScopes.test_rbac_legacy_116_portgroups_post_member [0.079291s] ... 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-0ae6d531-bf96-4857-abae-af6116f351f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_manager.DestroyVolumeConnectorTestCase.test_destroy_volume_connector_node_power_on [0.052995s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_not_allowed [0.038818s] ... 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.test_acl.TestRBACScopedRequests.test_system_scoped_053_nodes_management_boot_device_supported_get_reader [0.084732s] ... 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-c0e0a600-c070-46fa-ba59-6b83524653c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target [0.046815s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_ports_subresource_portgroup_not_found [0.042658s] ... 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-ad686112-b6e6-4ea6-bf8d-8deaea0fe212 X-Openstack-Ironic-Api-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_portgroup.TestListPortgroups.test_sort_key [0.047241s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?sort_key=uuid WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-09e74cea-1340-4b97-bcea-f2eb33a879e6 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": "a31228b8-3aa7-4b71-a79b-062b07a37c04", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/a31228b8-3aa7-4b71-a79b-062b07a37c04", "rel": "self"}, {"href": "http://localhost/portgroups/a31228b8-3aa7-4b71-a79b-062b07a37c04", "rel": "bookmark"}]}, {"uuid": "e11bac11-afcb-4a19-bb20-5ba551bed11f", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/e11bac11-afcb-4a19-bb20-5ba551bed11f", "rel": "self"}, {"href": "http://localhost/portgroups/e11bac11-afcb-4a19-bb20-5ba551bed11f", "rel": "bookmark"}]}, {"uuid": "fec46130-26e4-45ad-8506-921dc7324666", "address": "52:54:00:cf:2d:30", "name": "portgroup0", "links": [{"href": "http://localhost/v1/portgroups/fec46130-26e4-45ad-8506-921dc7324666", "rel": "self"}, {"href": "http://localhost/portgroups/fec46130-26e4-45ad-8506-921dc7324666", "rel": "bookmark"}]}]} {0} ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_already_destroyed [0.059462s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_054_nodes_management_inject_nmi_put_admin [0.084974s] ... 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-d7637957-012a-4b2e-bf9f-4ac113efef27 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_allowed [0.048488s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?sort_key=mode WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-112e5ce0-83be-46a8-906c-d4048bf5f7ea 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": "ef95e50b-127a-4ae9-9964-4de520ba6561", "address": "52:54:00:cf:2d:31", "name": "portgroup1", "links": [{"href": "http://localhost/v1/portgroups/ef95e50b-127a-4ae9-9964-4de520ba6561", "rel": "self"}, {"href": "http://localhost/portgroups/ef95e50b-127a-4ae9-9964-4de520ba6561", "rel": "bookmark"}]}, {"uuid": "352d632f-6f2d-48c8-b289-b6eb6af7336e", "address": "52:54:00:cf:2d:32", "name": "portgroup2", "links": [{"href": "http://localhost/v1/portgroups/352d632f-6f2d-48c8-b289-b6eb6af7336e", "rel": "self"}, {"href": "http://localhost/portgroups/352d632f-6f2d-48c8-b289-b6eb6af7336e", "rel": "bookmark"}]}, {"uuid": "ba945378-4d77-4a13-80da-3691e8675bd1", "address": "52:54:00:cf:2d:33", "name": "portgroup3", "links": [{"href": "http://localhost/v1/portgroups/ba945378-4d77-4a13-80da-3691e8675bd1", "rel": "self"}, {"href": "http://localhost/portgroups/ba945378-4d77-4a13-80da-3691e8675bd1", "rel": "bookmark"}]}]} {0} ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_gone [0.061050s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_invalid [0.037174s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?sort_key=foo WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-3de4919c-4765-4a52-87f4-ce328f59251f X-Openstack-Ironic-Api-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-4719f7c1-6f6e-4629-916f-52ea9469724e X-Openstack-Ironic-Api-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-9b607dd9-46d2-4531-b57d-9110adcba024 X-Openstack-Ironic-Api-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-442febfc-0072-495e-ad28-ad9b96699eb5 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_055_nodes_management_inject_nmi_put_member [0.077306s] ... 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-84d2f260-4751-4d17-874a-34518d6e5d16 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_locked [0.036801s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_portgroup.TestListPortgroups.test_sort_key_not_allowed [0.029723s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups?sort_key=mode WITH {} GOT Response: 406 Not Acceptable Content-Type: application/json Openstack-Request-Id: req-232e6fb3-1545-4209-bc83-52736ee89e71 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}"} {0} ironic.tests.unit.conductor.test_manager.DestroyVolumeTargetTestCase.test_destroy_volume_target_node_power_on [0.042503s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_max_version [0.035351s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-220da3c4-f9ad-4f3c-8469-d345a55b9b06 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"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_056_nodes_management_inject_nmi_put_reader [0.085764s] ... 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-63c917b4-2c06-4d8e-892d-1c4f2512637c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_117_portgroups_post_observer [0.315605s] ... 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-f0346ea4-c37b-4ed5-8e8b-f930f84c1443 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_root.TestV1Routing.test_microversion_headers [0.056150s] ... ok {0} ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_indicator_state [0.062096s] ... ok {0} ironic.tests.unit.conductor.test_manager.IndicatorsTestCase.test_get_supported_indicators [0.037613s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_min_version [0.044911s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-68ad8a11-876d-4764-bda6-86f93a3a0a90 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.api.test_acl.TestRBACScopedRequests.test_system_scoped_057_nodes_states_get_admin [0.077664s] ... 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-b1a08e3a-a455-4bc6-ad9d-79deebd85e4a 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_118_portgroups_detail_get_admin [0.082347s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e2e32e1e-45ca-48ec-80a1-7e5e96e6e368 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": "2026-04-12T07:47:25.092021+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.conductor.test_manager.IndicatorsTestCase.test_set_indicator_state [0.052892s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_root.TestV1Routing.test_route_checks_version [0.058237s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-92f4bf3e-e520-46c0-8224-fd40dd1234dc 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.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_disappears [0.029950s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_119_portgroups_detail_get_member [0.068296s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d81d4205-ab2d-4e44-8325-301c1d52c321 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_058_nodes_states_get_member [0.085446s] ... 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-7e4bd9e1-576e-4f36-a30d-a71a79c3d6f2 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} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_empty [0.036390s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-15541568-f9ba-4b6e-b73f-3cfc3c3dda2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"shards": []} {0} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_acquire_node_locked [0.032233s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_fail_get_one [0.037967s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards/shard1 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a5515b91-c458-402e-a2f9-9a45c35f8fad X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_no_worker_avail [0.029405s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_fail_post [0.026357s] ... 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\": \"\"}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_120_portgroups_detail_get_observer [0.076037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fa9aae3d-bc16-4688-b2ba-0e971c55868a 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": "2026-04-12T07:47:25.246350+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.test_acl.TestRBACScopedRequests.test_system_scoped_059_nodes_states_get_reader [0.085197s] ... 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-e1319591-252f-4bc6-a960-28b21a8e81e7 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} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_fail_put [0.028242s] ... 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\": \"\"}"} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_fail_wrong_version [0.027864s] ... 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\"}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin [0.085705s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-56c319f1-23aa-48b9-b9da-ab5d845c3bf8 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": "2026-04-12T07:47:25.322755+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.test_acl.TestRBACScopedRequests.test_system_scoped_060_nodes_states_power_put_admin [0.087316s] ... 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-0904d516-773c-4080-bff6-5fab27810a35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_shard.TestListShards.test_multiple_shards [0.071274s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9db9daf2-bc70-4acf-8d44-16bf495faa2d 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}]} {3} ironic.tests.unit.api.controllers.v1.test_shard.TestListShards.test_nodes_but_no_shards [0.042531s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1460ca40-3344-4815-b162-1343b6870b7b 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.test_acl.TestRBACScopedRequests.test_system_scoped_061_nodes_states_power_put_member [0.073956s] ... 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-24f2ebbc-8d60-4813-ad99-0238a24e1729 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.118778s] ... 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-ecf0d31b-2826-482a-83f5-f3b6c41a7eb7 X-Openstack-Ironic-Api-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.api.controllers.v1.test_shard.TestListShards.test_one_shard [0.038542s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03d91217-f200-418a-8cd2-176eab27b7dc 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.TestApiUtils.test_apply_jsonpatch [0.019384s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_no_add_root_attr [0.017939s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_062_nodes_states_power_put_reader [0.068225s] ... 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-5df4fae8-3641-4a23-94a0-5d359dd62cd8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_exiting_with_other_exception [0.288988s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer [0.087163s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6601f0bc-c3ae-4892-9eec-b60d601b31a8 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": "2026-04-12T07:47:25.533363+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.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_maintenance_after_lock [0.033491s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_remove_non_existent [0.058178s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_063_nodes_states_boot_mode_put_admin [0.067736s] ... 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-cdbfc27a-a547-44cf-9e99-ec781da34100 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_utils.TestApiUtils.test_apply_jsonpatch_replace_non_existent_list_item [0.026600s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_no_deploywait_after_lock [0.040948s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields [0.020819s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_check_for_invalid_fields_fail [0.019939s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_not_mapped [0.031077s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_064_nodes_states_boot_mode_put_member [0.072427s] ... 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-23c24b21-8fc6-4213-8385-57c499fd0994 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_124_portgroups_portgroup_ident_patch_admin [0.099924s] ... 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-2ec2608b-0f6c-4fac-9ae0-397c2b38835a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_multiple_success [0.026217s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_timeout [0.033362s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_no_path [0.019868s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerCheckDeployTimeoutsTestCase.test_worker_limit [0.032338s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_remove [0.028861s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_065_nodes_states_boot_mode_put_reader [0.064015s] ... 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-3b01d5a4-9c8f-4ccc-9410-fcefa0efcdea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_get_patch_values_success [0.022902s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member [0.087807s] ... 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-d9fa3c0a-442e-4489-b4e7-8bbafce059b9 X-Openstack-Ironic-Api-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.conductor.test_manager.ManagerSyncPowerStatesTestCase.test__sync_power_state_multiple_nodes [0.037612s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_replace [0.033757s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_disappears_on_acquire [0.032434s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_similar_subpath [0.019150s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_066_nodes_states_secure_boot_put_admin [0.066905s] ... 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-ab5629a0-1e8f-4f2e-937b-85fb5a6de6c9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_subpath_success [0.023849s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_deploywait_on_acquire [0.044391s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_removed_success [0.025142s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer [0.108722s] ... 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-2be604a8-839a-420a-b5fe-c5f89fb00fa8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_similar_subpath [0.021563s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_enroll_on_acquire [0.034011s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_subpath_success [0.017341s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_067_nodes_states_secure_boot_put_member [0.082040s] ... 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-61f923be-6ab5-476f-a158-8777769d9caa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_maintenance_on_acquire [0.026771s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_is_path_updated_success [0.019763s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_in_power_transition_on_acquire [0.028975s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_update_changed_fields [0.022813s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_locked_on_acquire [0.027857s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patch_validate_allowed_fields [0.027301s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin [0.093119s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8ba722ed-4c8c-4aa0-836a-1653f2adaac2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_node_not_mapped [0.027068s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_patched_validate_with_schema [0.028990s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_sanitize_dict [0.020239s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node [0.042938s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_limit [0.023590s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestApiUtils.test_validate_sort_dir [0.031534s] ... ok {0} ironic.tests.unit.conductor.test_manager.ManagerSyncPowerStatesTestCase.test_single_node_adopt_failed [0.069089s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy [0.036948s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member [0.151781s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b98eb2c3-cfe3-4d73-bc72-5a49797d46e2 X-Openstack-Ironic-Api-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.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden [0.023714s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_forbidden_no_project [0.019749s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin [0.020549s] ... ok {0} ironic.tests.unit.conductor.test_manager.MiscTestCase.test__mapped_to_this_conductor [0.083754s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_non_admin_owner_proj_mismatch [0.031595s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_068_nodes_states_secure_boot_put_reader [0.313862s] ... 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-56ae0d0f-997f-43d7-8fc3-2653b1e636d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_129_portgroups_portgroup_ident_delete_observer [0.103020s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1e3fa352-9e66-4026-915e-455f0ec5c8c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_utils.TestCheckListPolicy.test_check_list_policy_with_owner [0.024006s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve [0.023194s] ... ok {0} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_get_node_with_token [0.063548s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_multiple_node_policies_and_retrieve_first_fail [0.019935s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_069_nodes_states_provision_put_admin [0.080000s] ... 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-303879d4-5913-49be-9dce-0cc866e0f5fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_utils.TestCheckMultipleNodePoliciesAndRetrieve.test_check_node_policy_and_retrieve_no_node [0.021012s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_post_name [0.019995s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_130_nodes_portgroups_get_admin [0.100581s] ... 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-884b6bf3-fe79-496c-b4e3-e497bcfeffa6 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.conductor.test_manager.MiscTestCase.test_iter_nodes [0.079308s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_allow_node_logical_names_pre_name [0.025464s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_name_no_logical_name [0.021416s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_by_uuid_no_logical_name [0.022779s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_070_nodes_states_provision_put_member [0.119221s] ... 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-6f7508d8-faf4-4134-a39a-2c4656530b77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_name [0.032864s] ... ok {0} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_iter_nodes_shutdown [0.089818s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_131_nodes_portgroups_get_member [0.099699s] ... 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-f88d9968-2b9f-4248-bf70-92b3a07bf862 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_expect_uuid [0.031714s] ... ok {0} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_node_with_token_already_locked [0.046027s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_get_rpc_node_invalid_name [0.022422s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_is_valid_node_name [0.019554s] ... ok {0} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_node_with_token_already_set [0.037075s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_132_nodes_portgroups_get_observer [0.101678s] ... 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-f6712012-1c51-46a6-ba01-6dbda4f28dce 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_utils.TestNodeIdent.test_populate_node_uuid [0.047424s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_071_nodes_states_provision_put_reader [0.135123s] ... 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-ca410359-66de-4f73-bfdb-b168441cdae0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid [0.025533s] ... ok {0} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail [0.055215s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_id_with_uuid_not_found [0.019753s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id [0.020340s] ... ok {0} ironic.tests.unit.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_deploy_templates [0.040999s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_133_nodes_portgroups_detail_get_admin [0.106974s] ... 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-b7275085-ae16-46f4-9e36-8cb301c5bd28 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": "2026-04-12T07:47:26.582587+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.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_instance_traits [0.035347s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_072_nodes_states_provision_put_service [0.117156s] ... 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-fa3997f7-ff42-4a31-ae8d-4f1a5f990a68 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.MiscTestCase.test_validate_driver_interfaces_validation_fail_unexpected [0.047267s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_134_nodes_portgroups_detail_get_member [0.092201s] ... 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-b3cc4b53-e6eb-45c7-b92e-d36f1485d6a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.conductor.test_manager.MiscTestCase.test_validate_dynamic_driver_interfaces [0.053204s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_073_nodes_states_raid_put_admin [0.126846s] ... 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-51905888-5ecc-4969-bb36-c9d118e5e3e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_135_nodes_portgroups_detail_get_observer [0.089474s] ... 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-0ceb3003-840f-4f60-8686-ff5337db8ad7 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": "2026-04-12T07:47:26.773041+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.conductor.test_manager.NmiTestCase.test_inject_nmi [0.079540s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_utils.TestNodeIdent.test_replace_node_uuid_with_id_not_found [0.244079s] ... ok {0} ironic.tests.unit.conductor.test_manager.NmiTestCase.test_inject_nmi_node_locked [0.036992s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_volume.TestGetVolume.test_get_volume [0.049327s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fc323af5-2f0c-48be-a133-29daa9b81e3b 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-d027318e-b607-4bab-8622-c0a59294f279 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-b4ba8c7f-763f-47ab-9265-449cbabe14e8 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-e5bab202-e82f-4afd-9d5b-8ddbc716cebd 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-4133b4d6-fca4-4f3c-b017-6e33c4af1657 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-b7cfad16-d040-430e-a0e1-0ce21724e96b 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-dcf7a389-424c-40e2-9f3f-e7cc04e768c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": []} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_136_ports_get_admin [0.086862s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-34fb729a-8fb3-4dc0-8a8c-c34db14d5ffd 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.conductor.test_manager.NmiTestCase.test_inject_nmi_not_implemented [0.046126s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_074_nodes_states_raid_put_member [0.130606s] ... 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-b1569104-354b-487a-a0a4-08eb5568d1a5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.controllers.v1.test_volume.TestGetVolume.test_get_volume_invalid_api_version [0.041933s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/ WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-58f604a6-c1e2-4e2b-9419-0feaf1930361 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.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_invalid_param [0.053378s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid [0.040831s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 204 No Content Openstack-Request-Id: req-dfb13835-af54-461a-be5c-418c441b8942 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.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_137_ports_get_member [0.088837s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-35c9e559-75f8-4ca0-aba3-5bfa063dd438 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.NmiTestCase.test_inject_nmi_validate_missing_param [0.047046s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_byid_invalid_api_version [0.038454s] ... 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.test_acl.TestRBACScopedRequests.test_system_scoped_075_nodes_states_raid_put_reader [0.102662s] ... 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-b129394a-5502-4733-be1b-2b6acc834ebc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_1_nodes_8_workers [0.027281s] ... ok {0} ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_6_nodes_8_workers [0.023112s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_invalid_power_state [0.048952s] ... 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-dab5c91b-20ca-43ac-9327-6bd5fad62544 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_1_worker [0.025357s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_076_nodes_states_console_get_admin [0.066479s] ... 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-37c76b87-c0c3-42d5-804d-739fb616ff44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_138_ports_get_observer [0.121241s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e881298d-4a9c-4d45-ab58-beb9df149573 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.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_9_nodes_8_workers [0.029820s] ... ok {3} ironic.tests.unit.api.controllers.v1.test_volume_target.TestDelete.test_delete_volume_target_node_locked [0.048788s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 409 Conflict Content-Type: application/json Openstack-Request-Id: req-1c63f058-fcd0-4e0a-bfca-fd87449b9970 X-Openstack-Ironic-Api-Maximum-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.conductor.test_manager.ParallelPowerSyncTestCase.test__sync_power_states_node_prioritization [0.053380s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_077_nodes_states_console_get_member [0.084568s] ... 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-e3b7a16a-c7e8-47ea-85fb-69960e92cb89 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_139_ports_post_admin [0.085867s] ... 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-5462aa25-1cc3-46e9-a071-209042c7a03b X-Openstack-Ironic-Api-Maximum-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_001_values ... SKIPPED: These are fake reference values for YAML templating {0} ironic.tests.unit.conductor.test_manager.RaidTestCases.test_get_raid_logical_disk_properties [0.074923s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_078_nodes_states_console_get_reader [0.068315s] ... 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-1b12649e-b13b-4959-bee8-4c05417b4e03 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_140_ports_post_member [0.080319s] ... 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-272a6c3f-8fae-46f5-b869-4331a7dd3383 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.RaidTestCases.test_set_target_raid_config [0.051509s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_002_owner_admin_cannot_post_nodes [0.124454s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ae233b7a-77e9-4ea2-bae3-34e7fc55c014 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_079_nodes_states_console_get_service [0.079483s] ... 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-80deadd1-3509-4a50-8f4c-3db448d12401 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.RaidTestCases.test_set_target_raid_config_empty [0.055587s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_141_ports_post_observer [0.091621s] ... 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-b083b2e1-d44c-43be-92db-6b68b4081656 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_080_nodes_states_console_put_admin [0.068786s] ... 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-24886b3e-db5b-4fb9-9cc4-e5fd9e62fe0b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.RaidTestCases.test_set_target_raid_config_invalid_parameter_value [0.055639s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_142_ports_detail_get_admin [0.075597s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c6d5dc46-020b-46af-9044-0e70d8b2e2eb 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": "2026-04-12T07:47:27.425197+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.TestRBACProjectScoped.test_project_scoped_003_owner_admin_can_post_nodes [0.125678s] ... 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-de5c333e-b00b-4529-8787-4b1a379ba654 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector [0.045983s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_081_nodes_states_console_put_member [0.077412s] ... 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-485ebb38-dcdc-4359-be0c-d3fa154dd8ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_duplicate [0.045296s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_143_ports_detail_get_member [0.074264s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c7a27866-ec40-41db-9574-b90a01d9a646 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_node_locked [0.042260s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_082_nodes_states_console_put_reader [0.083173s] ... 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-a4bc158c-b84c-4bf7-8de9-9c8914fb9825 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_node_power_on [0.057572s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_144_ports_detail_get_observer [0.078973s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-54903d6d-9229-4610-97e7-01b145d98347 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": "2026-04-12T07:47:27.575734+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.TestRBACProjectScoped.test_project_scoped_004_service_nodes_cannot_post_nodes [0.179305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8a2fa77d-f38e-477d-a7d1-96293fad4662 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_083_nodes_states_console_put_service [0.077964s] ... 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-d8362607-b80d-4852-a1eb-576667886502 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_type [0.046242s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_145_ports_port_id_get_admin [0.085250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7c472c3e-a60e-47b9-9835-aa65394ea4f9 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": "2026-04-12T07:47:27.660085+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.conductor.test_manager.UpdateVolumeConnectorTestCase.test_update_volume_connector_uuid [0.046565s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_084_nodes_vendor_passthru_methods_get_admin [0.076190s] ... 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-e829f527-8458-444c-b54e-6149c329a7f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_005_service_nodes_can_post_nodes [0.105946s] ... 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-cfab7703-329c-4eda-9578-9c2a3b3c16f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_async [0.066936s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_146_ports_port_id_get_member [0.079755s] ... 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-a26b60b4-41a1-4c59-9874-8c398bcb5b25 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_085_nodes_vendor_passthru_methods_get_member [0.078965s] ... 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-4094beb3-52b0-461f-89d9-60ecf9174c6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_driver_not_found [0.056949s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_006_owner_manager_cannot_post_nodes [0.094237s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f22eb56d-d875-43e3-bfb2-4532747329fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_086_nodes_vendor_passthru_methods_get_reader [0.095509s] ... 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-fc93b500-c456-4d5e-b797-a5a14072db26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_http_method_not_supported [0.079674s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_007_lessee_admin_cannot_post_nodes [0.095200s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-57bed867-8721-4ca2-9447-887534a856af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_method_not_supported [0.051706s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_087_nodes_vendor_passthru_get_admin [0.085043s] ... 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-4323c953-a450-45b4-9dfb-c1627e1aa055 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_008_lessee_admin_can_post_nodes [0.098053s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c693df86-d60a-43f7-916c-854c00b88292 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_088_nodes_vendor_passthru_get_member [0.073482s] ... 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-25e8c4b7-cb6b-4d7a-a1e5-c70455901605 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_147_ports_port_id_get_observer [0.296625s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7cb1d804-27d5-4f45-8d44-2d557616412e 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": "2026-04-12T07:47:28.040215+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.test_acl.TestRBACScopedRequests.test_system_scoped_089_nodes_vendor_passthru_get_reader [0.067639s] ... 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-d2190504-bc0c-41a5-9df3-7b20a3946098 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_009_lessee_manager_cannot_post_nodes [0.100901s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b03693f3-02a5-4d5a-af42-c89c1b718e5e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_148_ports_port_id_patch_admin [0.102068s] ... 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-bd2d959b-8fcc-4356-8f40-32475f3177f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_090_nodes_vendor_passthru_post_admin [0.074173s] ... 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-529e0be8-6a4b-4455-8ad4-16a52522a76d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_010_lessee_manager_can_post_nodes [0.100921s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fa9d2ccf-4921-41a5-920c-0fe5c0e23eed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_no_default_interface [0.284787s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_149_ports_port_id_patch_member [0.076403s] ... 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-ada1ae5d-80c2-498f-9272-c8f2a7c7b435 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_091_nodes_vendor_passthru_post_member [0.085888s] ... 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-52bdbcf8-2064-4eeb-8359-21a956d79faf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_sync [0.051161s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_150_ports_port_id_patch_observer [0.075273s] ... 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-62818089-ea51-4002-9ac2-e922b3d3c700 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_manager.VendorPassthruTestCase.test_driver_vendor_passthru_validation_failed [0.046090s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_011_third_party_admin_cannot_post_nodes [0.121920s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4d00cf2c-6a6a-44a9-b20a-3c52f0186388 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_092_nodes_vendor_passthru_post_reader [0.076898s] ... 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-401d8d97-940e-4ccc-9416-5adb8f6575d8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods [0.050718s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_151_ports_port_id_delete_admin [0.088824s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-88fec5ab-7c0d-4636-90a9-d7477482a0ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_093_nodes_vendor_passthru_put_admin [0.074959s] ... 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-50de021b-13c9-48fc-8f16-8e67c25fa5ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.VendorPassthruTestCase.test_get_driver_vendor_passthru_methods_no_default_interface [0.050675s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_012_third_party_admin_can_post_nodes [0.116504s] ... 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-010d1972-f1f3-44f0-b358-d99eee5cf31b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_152_ports_port_id_delete_member [0.076271s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b7d4834d-0b90-4434-a853-11923c20f5be X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_094_nodes_vendor_passthru_put_member [0.085065s] ... 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-467f0c5e-ba4c-4d76-a356-8e641581219c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.VendorPassthruTestCase.test_get_node_vendor_passthru_methods [0.109747s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_013_owner_member_cannot_post_nodes [0.108745s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1805f797-7350-4386-a5d4-f42411744117 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_153_ports_port_id_delete_observer [0.093162s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2f6d81da-b6c2-4e7a-b0d0-9f687354df31 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_095_nodes_vendor_passthru_put_reader [0.081945s] ... 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-01f44d75-8b62-44d2-a8ed-da4476adee97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_async [0.079928s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_154_nodes_ports_get_admin [0.088795s] ... 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-e5191225-83ac-44a8-a1ab-d1e5dd7e65e5 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.test_acl.TestRBACProjectScoped.test_project_scoped_014_owner_reader_cannot_post_reader [0.107822s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b3841f9d-6af4-492a-a20b-537e6c704db7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_096_nodes_vendor_passthru_delete_admin [0.087016s] ... 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-81a9a8f8-85f9-41ab-87fd-3dc0e8d27b31 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_http_method_not_supported [0.090899s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_155_nodes_ports_get_member [0.071880s] ... 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-0668bc57-e0e9-4790-9fcc-fac2c450143c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_015_owner_admin_can_get_node [0.068454s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-eb4b05d0-2fd6-42f8-8f03-97313eaa4a1a 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": "7d36f292-b0ac-4a20-b34b-39ad3a9a1b22", "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.test_acl.TestRBACScopedRequests.test_system_scoped_097_nodes_vendor_passthru_delete_member [0.073105s] ... 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-aa7c09c5-bd97-40a2-87dc-c921d8465be4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_016_owner_manager_can_get_node [0.077559s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-682dbc10-4ff5-43e3-a6a5-3ffb336ccff0 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": "005a9edf-2b81-4106-aeb5-5ecf6da96bc2", "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.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_missing_method_parameters [0.110011s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_156_nodes_ports_get_observer [0.108524s] ... 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-c0651c5c-0380-42f2-863e-e6bbf523cfff 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.test_acl.TestRBACProjectScoped.test_project_scoped_017_owner_member_can_get_node [0.064718s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-70f6d9c9-3db3-4622-9a17-7319f156f95b 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": "372731aa-4abe-4e66-8461-9b0b3f66dadf", "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.test_acl.TestRBACScopedRequests.test_system_scoped_098_nodes_vendor_passthru_delete_reader [0.160878s] ... 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-f32b028f-84c0-4289-b79d-bba811db24d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_157_nodes_ports_detail_get_admin [0.087688s] ... 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-f7977415-4257-4a42-b436-28dece212657 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": "2026-04-12T07:47:28.903231+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.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_node_already_locked [0.119946s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_018_owner_reader_can_get_node [0.067692s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-50cf83c9-8af6-4f5b-be17-fdba535c71ba 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": "25b11f04-d62f-446d-8304-cb227392df16", "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_158_nodes_ports_detail_get_member [0.078139s] ... 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-e74c71f2-83db-4ada-bdd9-5e80f065fbed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_099_nodes_traits_get_admin [0.103065s] ... 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-762a8766-b94e-444c-8125-fd7831842fae 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.TestRBACProjectScoped.test_project_scoped_019_lessee_admin_can_get_node [0.076400s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-75d55137-aff9-4085-80b7-fef5ff2f029b 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": "e24750b9-2ab7-49e4-9e6d-5e83bad8209f", "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.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_shared_lock [0.083302s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_159_nodes_ports_detail_get_observer [0.091680s] ... 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-5cdf6b12-519f-4dd2-8617-5416763410e0 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": "2026-04-12T07:47:29.078980+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.TestRBACProjectScoped.test_project_scoped_020_lessee_manager_can_get_node [0.074951s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bc9ccdef-c826-463a-ab81-c5f79ef00589 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": "d08d2b54-f97a-4a10-b855-1bbbd436e45a", "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.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_sync [0.080832s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_021_lessee_member_can_get_node [0.084373s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3823fd30-e9d8-4f2d-9614-f32f5858a018 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": "859b297f-78b0-4627-bd86-2b2e3c33b986", "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.test_acl.TestRBACScopedRequests.test_system_scoped_100_nodes_traits_get_member [0.206805s] ... 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-729bcd11-dcb6-47f0-83c0-8f32173c2e41 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.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_unsupported_method [0.147889s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_022_lessee_reader_can_get_node [0.102831s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-064ffef9-e115-4811-9fe5-12914b5c0462 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": "bd2f5f3b-7e71-4436-86b9-b5fa9d92eb86", "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_160_portgroups_ports_get_admin [0.239093s] ... 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-00986eed-4ec9-4809-aacc-eebd347b527f 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.test_acl.TestRBACScopedRequests.test_system_scoped_101_nodes_traits_get_reader [0.156404s] ... 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-ef3916fb-599d-45c4-9c08-dbb337c19fb4 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.TestRBACProjectScoped.test_project_scoped_023_third_party_admin_cannot_get_node [0.098128s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9984ec79-0b15-4a5a-92ac-5d1130a96d7b 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.conductor.test_manager.VendorPassthruTestCase.test_vendor_passthru_worker_pool_full [0.158547s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_161_portgroups_ports_get_member [0.093546s] ... 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-8abc3740-b239-4181-a18e-d64b7f20ac97 X-Openstack-Ironic-Api-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.conductor.test_notification_utils.ProvisionNotifyTestCase.test_emit_notification [0.061798s] ... ok {0} ironic.tests.unit.conductor.test_notification_utils.ProvisionNotifyTestCase.test_mask_secrets [0.020410s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_024_owner_reader_can_get_their_node [0.116349s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-45422aa4-43f9-4d7c-98e8-ce28e79083db 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": "2026-04-12T07:47:29.460693+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"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_162_portgroups_ports_get_observer [0.086249s] ... 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-97211b61-fd0a-4425-af7e-ab808bb627e5 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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_all_steps [0.043861s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_025_owner_reader_cannot_get_other_node [0.071826s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/0ac50092-91d6-49a4-818d-53180ef9248a WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2e7658aa-8069-4cbe-81c4-26a66f49affb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 0ac50092-91d6-49a4-818d-53180ef9248a could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_disable_core_steps [0.055246s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_163_portgroups_ports_detail_get_admin [0.087219s] ... 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-9dbeec82-1595-4c89-a77a-0e0e8af8a263 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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_and_user_steps [0.045230s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_026_lessee_reader_can_get_their_node [0.081830s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bbb0bae4-4af4-4e98-985d-fc0122237cc7 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": "2026-04-12T07:47:29.658310+00:00", "updated_at": "2026-04-12T07:47:29.667016+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": "64dfc83b-9587-493c-9a52-d691e26f95fc", "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": "64dfc83b-9587-493c-9a52-d691e26f95fc", "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_164_portgroups_ports_detail_get_member [0.076482s] ... 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-4604f78a-a5a5-47c1-b995-62e0621f5cf1 X-Openstack-Ironic-Api-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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_duplicate_template_steps [0.063898s] ... ok {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_error [0.048222s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_102_nodes_traits_put_admin [0.387043s] ... 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-2a050682-0edd-49c9-ad5a-ad73253eb9f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_165_portgroups_ports_detail_get_observer [0.117865s] ... 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-0bb0548c-39b3-4396-acd4-88aefa297aed 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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_steps [0.041327s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_103_nodes_traits_put_member [0.081555s] ... 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-054b4c79-4791-4b95-a29e-6d6313db7250 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_driver_steps [0.050508s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_166_volume_get_admin [0.070825s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-332abd6e-f986-437b-b9e1-66f7ef44a597 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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_template_and_user_steps [0.050289s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_104_nodes_traits_put_reader [0.085923s] ... 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-d9658699-37a0-41bb-bb5c-280756a700a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_no_user_and_driver_steps [0.043618s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_167_volume_get_member [0.076015s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f6cdca5e-e029-4472-8e7c-ed6e20bdb76d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_driver_steps [0.042072s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_168_volume_get_observer [0.063925s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d296b0da-8d84-4ae3-8930-1196b04cf57d 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.test_acl.TestRBACScopedRequests.test_system_scoped_105_nodes_traits_delete_admin [0.089074s] ... 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-b4b86a14-f4a4-49e5-95e7-ca7a96781250 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_override_template_steps [0.058198s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_027_lessee_reader_cant_get_other_node [0.387541s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/34851b91-bc40-4bdd-a7ab-572cc8bd5b1f WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-556508d4-cde2-4ece-8ea0-5740f4f6b170 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 34851b91-bc40-4bdd-a7ab-572cc8bd5b1f could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_169_volume_connectors_get_admin [0.073358s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-21dc628c-8e67-4b8c-a0ff-4d7e0bb373fc 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": "854362b4-bc3d-4789-85c8-67fb7cb94ba8", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/854362b4-bc3d-4789-85c8-67fb7cb94ba8", "rel": "self"}, {"href": "http://localhost/volume/connectors/854362b4-bc3d-4789-85c8-67fb7cb94ba8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_skip_missing [0.048939s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_106_nodes_traits_delete_member [0.084318s] ... 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-60d9ea15-c315-4950-a0dc-59f71c5165d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_028_third_party_admin_cant_get_node [0.071580s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/3ec621c5-e811-46df-924d-00565898b3d2 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8944c23d-0a15-4d6d-a254-66406c5b7f3f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 3ec621c5-e811-46df-924d-00565898b3d2 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_170_volume_connectors_get_member [0.077946s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9693be53-c95a-4c88-90e5-1fe6b50fc4be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_107_nodes_traits_delete_reader [0.084913s] ... 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-9a74c76f-686a-43d6-8fa5-a9d0a58e418d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_029_owner_reader_can_get_restricted_fields [0.086411s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4ba0c71a-7cd7-4390-bf41-e6af87f7eb3e 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": "2026-04-12T07:47:30.193892+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"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_171_volume_connectors_get_observer [0.081898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bbeca1c1-6e89-449b-ad22-f159474f9da6 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": "863ee579-981d-441c-81cb-b832193fe81b", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/863ee579-981d-441c-81cb-b832193fe81b", "rel": "self"}, {"href": "http://localhost/volume/connectors/863ee579-981d-441c-81cb-b832193fe81b", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_108_nodes_traits_trait_put_admin [0.092246s] ... 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-a344b4b8-789f-4afa-9ddf-d507fbc1ced9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_030_lessee_reader_cannot_get_restricted_fields [0.130865s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a5feb6a9-2d8b-4a40-8b8b-9d4e245f8713 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": "2026-04-12T07:47:30.295205+00:00", "updated_at": "2026-04-12T07:47:30.303246+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": "e551a26b-2fed-4eb5-a712-8d6c98686530", "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": "e551a26b-2fed-4eb5-a712-8d6c98686530", "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"}]} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_template_and_driver_steps [0.256937s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_172_volume_connectors_post_admin [0.108472s] ... 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/d6a3c0c4-3bb5-4035-bdfd-0202fea84f5c Openstack-Request-Id: req-a3fbda15-fc8a-4af3-849e-fb02c83bd3b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d6a3c0c4-3bb5-4035-bdfd-0202fea84f5c", "created_at": "2026-04-12T07:47:30.383287+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/d6a3c0c4-3bb5-4035-bdfd-0202fea84f5c", "rel": "self"}, {"href": "http://localhost/volume/connectors/d6a3c0c4-3bb5-4035-bdfd-0202fea84f5c", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_driver_steps [0.040547s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_109_nodes_traits_trait_put_member [0.122658s] ... 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-51d0558e-9bc4-4a30-b960-8425088a0e17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_173_volume_connectors_post_member [0.080956s] ... 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-9648c650-51c7-41bd-9bd6-23bd71cbf230 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_steps.NodeDeployStepsTestCase.test__get_all_deployment_steps_user_and_template_steps [0.042930s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_031_owner_reader_can_get_detail [0.104333s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d9fe643b-056c-40ae-aed4-530494543728 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": "2026-04-12T07:47:30.412679+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": "2026-04-12T07:47:30.431318+00:00", "updated_at": "2026-04-12T07:47:30.439379+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": "88913096-fa72-4264-ba15-f513ad6b55f9", "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": "88913096-fa72-4264-ba15-f513ad6b55f9", "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"}]}]} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deploy_steps_unsorted [0.041734s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_110_nodes_traits_trait_put_reader [0.080919s] ... 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-978ea7c7-6eec-43b2-9e83-34eaaeed9a69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_174_volume_connectors_post_observer [0.077799s] ... 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-2c774519-c498-46e8-bd58-810df4b84851 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps [0.042863s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_032_lessee_reader_can_get_detail [0.080644s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f9530202-5b3c-44dd-90df-b315edd54812 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": "2026-04-12T07:47:30.523364+00:00", "updated_at": "2026-04-12T07:47:30.530533+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": "ad27328d-dfb4-4840-9670-a0ed09a20a99", "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": "ad27328d-dfb4-4840-9670-a0ed09a20a99", "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"}]}]} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_steps_only_enabled [0.033750s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_033_third_party_admin_cannot_get_detail [0.072869s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aa2252be-873a-4b52-a8c3-51c155c4d57b 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.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates [0.050538s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_111_nodes_traits_trait_delete_admin [0.104892s] ... 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-38d6d5ec-45ca-4818-8cf4-83273d80e4b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_175_volume_volume_connector_id_get_admin [0.099749s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/38dadcc1-dd8b-4dc0-bb66-2c20feac020e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5e21412a-bb2b-476f-a7fc-0b999a48c2ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "38dadcc1-dd8b-4dc0-bb66-2c20feac020e", "created_at": "2026-04-12T07:47:30.612310+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/38dadcc1-dd8b-4dc0-bb66-2c20feac020e", "rel": "self"}, {"href": "http://localhost/volume/connectors/38dadcc1-dd8b-4dc0-bb66-2c20feac020e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_deployment_templates_no_traits [0.039694s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_112_nodes_traits_trait_delete_member [0.071114s] ... 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-b8040cf3-f483-452d-a6b5-06a94a20c629 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.077981s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/69002aa2-ba7c-461f-ac7e-3e959aa50258 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5f1bc727-9da5-4750-b829-8193380976a8 X-Openstack-Ironic-Api-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 69002aa2-ba7c-461f-ac7e-3e959aa50258 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__get_steps_from_deployment_templates [0.055266s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_034_owner_admin_can_patch_node_extra [0.120283s] ... 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-a499c6ae-fd39-41b6-8605-507775213e48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps [0.040749s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_113_nodes_traits_trait_delete_reader [0.071246s] ... 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-1b47820c-9812-4f6a-b761-e498130b5688 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_177_volume_volume_connector_id_get_observer [0.083014s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/39bb89b3-5fbd-4c00-b3b5-6d2982709cc5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9447944e-e865-4b10-8423-edc7f291ac7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "39bb89b3-5fbd-4c00-b3b5-6d2982709cc5", "created_at": "2026-04-12T07:47:30.774738+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/39bb89b3-5fbd-4c00-b3b5-6d2982709cc5", "rel": "self"}, {"href": "http://localhost/volume/connectors/39bb89b3-5fbd-4c00-b3b5-6d2982709cc5", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_core [0.038867s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_114_nodes_vifs_get_admin [0.081861s] ... 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-37752cf7-3b5f-4b65-ad22-a24e6fb8b15a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_disable_non_core [0.056157s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_178_volume_volume_connector_id_patch_admin [0.091463s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/d4cd48c0-fd87-4a63-b23c-70b26df35b22 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-273c0ff4-a923-495d-921b-414a9ee6b955 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_duplicates [0.042551s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_035_owner_manager_can_patch_node_extra [0.169122s] ... 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-325f9270-aefb-40ea-bf2d-dbaa5f8b12d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_115_nodes_vifs_get_member [0.068829s] ... 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-4547fe47-def0-419c-913c-9c560211b3da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_get_steps_exception [0.044959s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_179_volume_volume_connector_id_patch_member [0.090727s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/87083162-6543-47b3-accc-b2b920589f81 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5033a097-39c2-423e-910b-b6f8e7dd7f7a X-Openstack-Ironic-Api-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 87083162-6543-47b3-accc-b2b920589f81 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_invalid_arg [0.051334s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_116_nodes_vifs_get_reader [0.086970s] ... 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-5d98e148-9e7b-4d57-a75b-1e5de32681e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_missing_required_arg [0.047880s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_036_owner_member_can_patch_node_extra [0.136979s] ... 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-45a992bf-fe24-403c-b113-e7c53f444c95 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_180_volume_volume_connector_id_patch_observer [0.087678s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/6fe415d1-9ce7-4ebc-a790-ecb5cc4e61e0 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5c44b08d-013e-4124-9f7e-7b0148ce8e1f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_no_steps [0.042320s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_117_nodes_vifs_get_service [0.070520s] ... 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-d40ce8a5-c55a-4c8c-ac9e-569878f437fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_not_supported [0.043712s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_037_owner_reader_cannot_patch_node_extra [0.087648s] ... 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-5782d69e-ef24-4c86-8ba1-450dca2cfd4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_181_volume_volume_connector_id_delete_admin [0.094093s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/e5ce6658-7aa8-4685-9f41-eff3458c08d2 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-66e3ed4f-7d1e-4c7b-bd07-87a952d68dd0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_118_nodes_vifs_post_admin [0.084662s] ... 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-02af006c-a693-470b-8670-26c645c6b3a5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_override_core [0.046300s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_182_volume_volume_connector_id_delete_member [0.082735s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/5cbc006c-8ec1-4768-a5ff-5bf72ffdb485 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a811f1b6-888a-45f8-b668-9967ccc4d0f4 X-Openstack-Ironic-Api-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 5cbc006c-8ec1-4768-a5ff-5bf72ffdb485 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test__validate_user_deploy_steps_skip_missing [0.073075s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_038_lessee_admin_can_patch_node_extra [0.119200s] ... 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-d436685f-902f-47b9-b3f2-ebc1f816d730 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_119_nodes_vifs_post_member [0.088806s] ... 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-4f05a964-994a-4ed4-87f5-23b26a0203c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps [0.057236s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_120_nodes_vifs_post_reader [0.086226s] ... 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-0d9ec1d6-e8cc-4119-88a8-05f32081aca3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_steps.NodeDeployStepsTestCase.test_set_node_deployment_steps_skip_missing [0.064656s] ... ok {0} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps [0.046581s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_121_nodes_vifs_post_service [0.078235s] ... 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-a498ec38-0668-467f-bcbd-ce9455d3ce7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_only_enabled [0.043284s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_039_lessee_manager_can_patch_node_extra [0.236836s] ... 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-9c86092e-1314-4533-a959-59774056c4e5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_fail [0.043525s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_122_nodes_vifs_post_service_project [0.103784s] ... 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-45c782b0-ca59-415f-89e4-818a420a5d97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_off [0.035803s] ... ok {0} ironic.tests.unit.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_priority_override_ok [0.037192s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_183_volume_volume_connector_id_delete_observer [0.342084s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/4829f36a-f220-485a-8c6d-0bf7f5e8c7ab GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a2758703-1f7e-4234-b47f-73cad55f66d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_040_lessee_member_can_patch_node_extra [0.120665s] ... 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-af3e5809-b90e-469f-8aef-2c4940ca572a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_123_nodes_vifs_node_vif_ident_delete_admin [0.122009s] ... 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-5fa96d56-aaba-4d8c-be89-13870b2d5691 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeVerifyStepsTestCase.test__get_verify_steps_unsorted [0.102722s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_184_volume_targets_get_admin [0.147498s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9276a819-9bea-4bc3-b3c4-7d64c6d0cbf7 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": "9f4b1634-b021-4e50-a1f1-13fb971ab71f", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9f4b1634-b021-4e50-a1f1-13fb971ab71f", "rel": "self"}, {"href": "http://localhost/volume/targets/9f4b1634-b021-4e50-a1f1-13fb971ab71f", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_124_nodes_vifs_node_vif_ident_delete_member [0.105614s] ... 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-3c899146-c873-4e62-b75b-e919934f2858 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.NodeVerifyStepsTestCase.test_execute_verify_step [0.102599s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_185_volume_targets_get_member [0.069737s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9577e21a-d119-4ba2-86e9-89ba5edf5a25 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_041_lessee_reader_cannot_patch_node_extra [0.194197s] ... 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-930458d7-7372-4ab1-9391-fb7e28401e2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_125_nodes_vifs_node_vif_ident_delete_reader [0.068180s] ... 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-438fd971-949f-4fc6-a276-28f548fed6b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_steps.ReservedStepHandlerByNameTestCase.test_reserved_step_wait [0.055703s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_186_volume_targets_get_observer [0.087382s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-96f8adcc-d5e9-43e4-81b4-0eeca01b77dc 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": "d00d22ac-5ee8-4d94-9f31-d2d807cca491", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/d00d22ac-5ee8-4d94-9f31-d2d807cca491", "rel": "self"}, {"href": "http://localhost/volume/targets/d00d22ac-5ee8-4d94-9f31-d2d807cca491", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.conductor.test_steps.ReservedStepHandlerByNameTestCase.test_reserved_step_wait_time [0.066406s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_042_third_party_admin_cannot_patch_node_extra [0.105780s] ... 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-9f2a1fad-e438-4138-b2b8-4a2bdb828e6d X-Openstack-Ironic-Api-Maximum-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.test_acl.TestRBACScopedRequests.test_system_scoped_126_nodes_vifs_node_vif_ident_delete_service [0.083116s] ... 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-08f894b3-f96e-433c-bf55-954b0ac2bfbf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_187_volume_targets_post_admin [0.091873s] ... 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/588c3455-1cce-4a8d-9f07-b9391d83577a Openstack-Request-Id: req-f203619a-81b2-42f7-9cc6-75c2520dc435 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "588c3455-1cce-4a8d-9f07-b9391d83577a", "created_at": "2026-04-12T07:47:31.996897+00:00", "updated_at": null, "boot_index": 4, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/588c3455-1cce-4a8d-9f07-b9391d83577a", "rel": "self"}, {"href": "http://localhost/volume/targets/588c3455-1cce-4a8d-9f07-b9391d83577a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_127_nodes_management_indicators_get_allow ... SKIPPED: Not implemented yet {0} ironic.tests.unit.conductor.test_steps.ReservedStepHandlerByNameTestCase.test_reserved_step_wait_time_to_long [0.084403s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_043_owner_admin_can_change_drivers [0.115559s] ... 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-ec5c3e56-b2e8-4f4d-9912-ffaa3d037d6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_128_nodes_management_indicators_component_get_allow ... SKIPPED: Not implemented yet {0} ironic.tests.unit.conductor.test_steps.ReservedStepsHandlerTestCase.test_reserved_step_power_off [0.052246s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_188_volume_targets_post_member [0.098224s] ... 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-0813f022-a96b-428a-be05-f19b0ee938f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_steps.ReservedStepsHandlerTestCase.test_reserved_step_power_on [0.063232s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_129_nodes_management_indicators_component_ind_ident_get_allow ... SKIPPED: Not implemented yet {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_189_volume_targets_post_observer [0.081129s] ... 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-ec3d2dfc-6d51-417c-840d-db5829cc32ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_steps.ReservedStepsHandlerTestCase.test_reserved_step_power_reboot [0.061030s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_130_nodes_management_indicators_component_ind_ident_put_allow ... SKIPPED: Not implemented yet {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_044_owner_manager_can_change_drivers [0.158285s] ... 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-de6271bf-80f6-4ad3-868d-efdd81ce210a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_template [0.054118s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_190_volume_volume_target_id_get_admin [0.084239s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/0a95dd2e-9934-4550-8d08-27fc0d2f02aa WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8eb9c299-bdb7-44dc-a166-c1b18aa57b0c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0a95dd2e-9934-4550-8d08-27fc0d2f02aa", "created_at": "2026-04-12T07:47:32.231260+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/0a95dd2e-9934-4550-8d08-27fc0d2f02aa", "rel": "self"}, {"href": "http://localhost/volume/targets/0a95dd2e-9934-4550-8d08-27fc0d2f02aa", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_131_portgroups_get_admin [0.081302s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bdf4563a-a87b-494b-be99-9eee32c302f8 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.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_error_on_usersteps [0.043618s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_191_volume_volume_target_id_get_member [0.075030s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/bf2c487c-1360-4c5e-9fb8-74a6556e2f8d WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-62832756-80f7-4ec7-9181-0a9b7c115f4f X-Openstack-Ironic-Api-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 bf2c487c-1360-4c5e-9fb8-74a6556e2f8d could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_ok [0.055362s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_132_portgroups_get_member [0.077232s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0f1fe4ca-f1be-4e7d-95e5-5799fbf86322 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.test_acl.TestRBACProjectScoped.test_project_scoped_045_owner_member_can_patch_all_the_things [0.137843s] ... 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-ccfc7dfb-3f90-4eea-b9d5-5665a0e20258 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.ValidateUserDeployStepsAndTemplatesTestCase.test_skip_missing [0.050585s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_133_portgroups_get_reader [0.068945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-248d7810-b0dc-4357-b526-6fb085404319 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_192_volume_volume_target_id_get_observer [0.089171s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/b67c97f2-1d2b-4199-97da-b4a718e6fe96 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-53193830-8de7-4e97-97e2-1f81e0d74299 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b67c97f2-1d2b-4199-97da-b4a718e6fe96", "created_at": "2026-04-12T07:47:32.389425+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/b67c97f2-1d2b-4199-97da-b4a718e6fe96", "rel": "self"}, {"href": "http://localhost/volume/targets/b67c97f2-1d2b-4199-97da-b4a718e6fe96", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps [0.044796s] ... ok {0} ironic.tests.unit.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_no_steps [0.041677s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_046_owner_member_can_change_lessee [0.128112s] ... 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-a06ad9fa-0b83-4b81-b024-a10be7943569 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_134_portgroups_post_admin [0.084238s] ... 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/f71ddd2f-f3d3-4a83-8955-82f81c08e787 Openstack-Request-Id: req-b26ce04c-7eb4-4976-be87-20b698d9d35a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f71ddd2f-f3d3-4a83-8955-82f81c08e787", "created_at": "2026-04-12T07:47:32.499588+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/f71ddd2f-f3d3-4a83-8955-82f81c08e787", "rel": "self"}, {"href": "http://localhost/portgroups/f71ddd2f-f3d3-4a83-8955-82f81c08e787", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/f71ddd2f-f3d3-4a83-8955-82f81c08e787/ports", "rel": "self"}, {"href": "http://localhost/portgroups/f71ddd2f-f3d3-4a83-8955-82f81c08e787/ports", "rel": "bookmark"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_193_volume_volume_target_id_patch_admin [0.092074s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/c9551d8f-0c87-478a-a32f-d78583b49b53 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5f41b324-6d15-44de-a9c0-f523b1d21892 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_steps.ValidateUserDeployStepsTestCase.test__get_validate_user_deploy_steps_on_node [0.049612s] ... ok {0} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_error_state [0.021458s] ... ok {0} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_no_state_change [0.031485s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_047_lessee_admin_cannot_change_lessee [0.113234s] ... 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-1bcdebcf-4b49-49e1-b9d4-12c1a2bab536 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_only_once [0.022160s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_194_volume_volume_target_id_patch_member [0.090945s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/04bd39af-0a03-4acf-bd89-09f9d39b0060 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a85a844b-29b1-44e2-86e7-944041c2ab2a X-Openstack-Ironic-Api-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 04bd39af-0a03-4acf-bd89-09f9d39b0060 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_resource_released [0.020572s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_135_portgroups_post_member [0.140784s] ... 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-b4dfb99e-7158-429a-be70-7edfa5732e4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_stable [0.024292s] ... ok {0} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_stable_to_unstable [0.025306s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_048_lessee_manager_cannot_change_lessee [0.086255s] ... 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-7fe66bc8-32a4-4dd3-a978-376c4eb41416 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_195_volume_volume_target_id_patch_observer [0.090121s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/f3aebad4-d4e0-478f-8b34-27c5eec0412c WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4feb3f1f-bbd8-47a9-8ac4-3d34c236ce9d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_stable [0.035196s] ... ok {0} ironic.tests.unit.conductor.test_task_manager.ProvisionNotifyTestCase.test_notify_unstable_to_unstable [0.021238s] ... ok {0} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_callback_stable_state [0.020257s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_136_portgroups_post_reader [0.109750s] ... 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-8d98a6ee-6865-4f77-aa97-1209fe7f6254 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_fsm_raises [0.019622s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_049_lessee_admin_cannot_change_owner [0.091607s] ... 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-cf3ac800-0d65-4a33-af97-4d8dd62baeff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_196_volume_volume_target_id_delete_admin [0.087581s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/e793cf1a-2b69-447c-8b95-776ab06f5b14 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-fd3123a0-3f08-4b4c-97d7-6eadff66756b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_notify [0.020156s] ... ok {0} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_no_callback_stable_state [0.021386s] ... ok {0} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback [0.035202s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_050_lessee_manager_cannot_change_owner [0.084568s] ... 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-7c0f0b8d-3cb5-4ee4-8694-08446b9da9d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_197_volume_volume_target_id_delete_member [0.077923s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/7f07125d-6305-49cb-8cd6-fc35d0cad559 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4c8def42-e04f-4a84-a4f8-0ed3ed95fe16 X-Openstack-Ironic-Api-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 7f07125d-6305-49cb-8cd6-fc35d0cad559 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_callback_and_error_handler [0.024600s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_137_portgroups_detail_get_admin [0.127422s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-53e2fe6b-2b40-4333-8270-3c2b226a82a8 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": "2026-04-12T07:47:32.842942+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.conductor.test_task_manager.TaskManagerStateModelTestCases.test_process_event_sets_target_state [0.021064s] ... ok {0} ironic.tests.unit.conductor.test_task_manager.TaskManagerStateModelTestCases.test_release_clears_resources [0.024324s] ... ok {0} ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_add_secret_token [0.023474s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_198_volume_volume_target_id_delete_observer [0.088242s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/578c5398-91f7-403e-8b1c-55e25be9e05a GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b8489044-90ca-46e9-9a76-6657d2f66f41 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_utils.AgentTokenUtilsTestCase.test_is_agent_token_present [0.028017s] ... ok {0} ironic.tests.unit.conductor.test_utils.AgentTokenUtilsTestCase.test_wipe_deploy_internal_info [0.021450s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_051_owner_admin_can_change_lessee [0.136821s] ... 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-31ce079c-9d61-40cf-8a3f-53d6eedf9cb7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_138_portgroups_detail_get_member [0.124429s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5325240f-13f7-48bf-8a6f-30850883c26d 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": "2026-04-12T07:47:32.982702+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_199_nodes_volume_get_admin [0.078993s] ... 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-928a7f29-f3d4-4f87-8226-861f733dcd30 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.conductor.test_utils.CacheVendorTestCase.test_already_present [0.049750s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_139_portgroups_detail_get_reader [0.071821s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d1d5bb9f-07d3-498c-8303-f81a8f10b4e2 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": "2026-04-12T07:47:33.061289+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.conductor.test_utils.CacheVendorTestCase.test_empty [0.045952s] ... ok {0} ironic.tests.unit.conductor.test_utils.CacheVendorTestCase.test_failed [0.039469s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_052_owner_manager_can_change_lessee [0.132381s] ... 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-aaebf519-436b-4990-8ca3-8523224612f6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_200_nodes_volume_get_member [0.109362s] ... 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-a4926a24-44f9-4771-a8a3-aecf240a9e5a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_utils.CacheVendorTestCase.test_ok [0.084189s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_201_nodes_volume_get_observer [0.072396s] ... 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-20542fae-b02f-446e-a582-75b3f1f93f94 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.conductor.test_utils.CacheVendorTestCase.test_unsupported [0.066608s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_053_owner_admin_cannot_change_owner [0.150118s] ... 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-b50e892d-24fa-4821-afe4-95f815fa89ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout [0.033473s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_202_nodes_volume_connectors_get_admin [0.137518s] ... 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-a0584be5-d520-43a3-ba76-df94e0aa06e4 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": "0f74ad1a-d9a1-4baf-9d39-c50f07c9d3c3", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/0f74ad1a-d9a1-4baf-9d39-c50f07c9d3c3", "rel": "self"}, {"href": "http://localhost/volume/connectors/0f74ad1a-d9a1-4baf-9d39-c50f07c9d3c3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_054_owner_manager_cannot_change_owner [0.109697s] ... 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-b35159cf-4dfc-4377-8b04-9a56898561a2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_140_portgroups_portgroup_ident_get_admin [0.316727s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-91047e68-88e5-45f7-a50a-267590bc674a 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": "2026-04-12T07:47:33.144518+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_203_nodes_volume_connectors_get_member [0.086641s] ... 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-f01b6b9b-47ad-4650-9dbe-4d035c440e11 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_141_portgroups_portgroup_ident_get_member [0.087397s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-98ffaf0a-3161-4da1-bdc9-89acc02c8ba5 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": "2026-04-12T07:47:33.460051+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.TestRBACProjectScoped.test_project_scoped_055_lessee_member_can_set_protected [0.123617s] ... 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-25c57b3a-0f86-41bd-8a77-7bf3eddd48c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_204_nodes_volume_connectors_get_observer [0.090529s] ... 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-8dc54237-fd89-4db8-838a-6a80ce2ac552 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": "4d2648c4-76fa-4010-9465-aeb93c1e2eb3", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/4d2648c4-76fa-4010-9465-aeb93c1e2eb3", "rel": "self"}, {"href": "http://localhost/volume/connectors/4d2648c4-76fa-4010-9465-aeb93c1e2eb3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_142_portgroups_portgroup_ident_get_reader [0.088032s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f56c0648-e558-40d4-8177-14f56304c83d 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": "2026-04-12T07:47:33.541057+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.conductor.test_utils.DeployingErrorHandlerTestCase.test_cleanup_after_timeout_shared_lock [0.323971s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_205_nodes_volume_targets_get_admin [0.104470s] ... 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-2704cf0e-82f5-4027-9d5d-40194c529a14 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": "4072488f-cab2-4391-ac5e-8fce32167a69", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/4072488f-cab2-4391-ac5e-8fce32167a69", "rel": "self"}, {"href": "http://localhost/volume/targets/4072488f-cab2-4391-ac5e-8fce32167a69", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_143_portgroups_portgroup_ident_patch_admin [0.097293s] ... 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-78815493-b33e-4838-9b83-419aeb4da341 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler [0.071018s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_206_nodes_volume_targets_get_member [0.082780s] ... 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-ac75882d-ba91-45d8-8fc4-c2179a6c4e59 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_ironic_exception [0.064844s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_144_portgroups_portgroup_ident_patch_member [0.098805s] ... 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-0a87d992-e7e5-45f3-9daa-31935fb36870 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_207_nodes_volume_targets_get_observer [0.086591s] ... 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-0fb02083-25e1-41f2-a002-a76df9800d0b 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": "494cc24e-c7e8-40ea-8bce-19b134f6e006", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/494cc24e-c7e8-40ea-8bce-19b134f6e006", "rel": "self"}, {"href": "http://localhost/volume/targets/494cc24e-c7e8-40ea-8bce-19b134f6e006", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_cleanup_random_exception [0.041450s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_056_lessee_member_cannot_patch_instance_info [0.328287s] ... 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-d982128b-ebf9-45dd-9f5e-7070ccecacd3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_no_cleanup [0.041028s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_145_portgroups_portgroup_ident_patch_reader [0.082374s] ... 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-93115d3f-514b-4914-9459-7c3f933b959e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_utils.DeployingErrorHandlerTestCase.test_deploying_error_handler_not_deploy [0.039026s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_208_drivers_get_admin [0.090724s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-03e2bb99-dafd-44f2-aa7f-7ef5cc59e75e 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.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps [0.049251s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_146_portgroups_portgroup_ident_delete_admin [0.103009s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-60aeeef8-40f5-416c-bfcf-812be0039c4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_057_lessee_member_cannot_patch_driver_info [0.143944s] ... 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-368460d7-1ea4-46cd-bb3e-a4e838628e04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_no_skip [0.051934s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_209_drivers_get_member [0.111691s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6009313d-85ff-436d-8c1c-30776f5fd7c0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_147_portgroups_portgroup_ident_delete_member [0.072235s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f3387ab3-720c-438c-a9f5-81ba337c2f4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_clean_steps_unset_clean_step [0.059807s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_058_lessee_member_cannot_patch_properties [0.099000s] ... 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-93b25868-05e5-4d7e-933b-716e18f1583a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps [0.051723s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_148_portgroups_portgroup_ident_delete_reader [0.067651s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bdbf97a1-ca8f-4dfe-a4cb-1528c0f53d73 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_210_drivers_get_observer [0.107936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9cec632c-2d26-4843-afff-9313cf069b40 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.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_no_skip [0.052702s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_059_lessee_member_cannot_patch_network_data [0.092097s] ... 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-4c176e52-fa2d-46e1-93ab-3e872bd6241f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_211_drivers_driver_name_get_admin [0.073627s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b16cb6e3-4b1e-44b2-903b-474d2a4f66e2 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_149_nodes_portgroups_get_admin [0.098544s] ... 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-e3318b90-5e5f-4825-9bd9-0399160ee1b4 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.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_deploy_steps_unset_deploy_step [0.079014s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_212_drivers_driver_name_get_member [0.069033s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3d7dd79d-de05-45aa-9d86-1c4db1d61e52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_060_lessee_member_cannot_patch_name [0.106106s] ... 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-30faf1c8-2c01-47d4-933d-106b32c43d6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_utils.GetNodeNextStepsTestCase.test_get_node_next_steps_exception [0.061690s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_150_nodes_portgroups_get_member [0.101856s] ... 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-9333d7a3-c5f1-412b-985c-8fc7699da510 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_213_drivers_driver_name_get_observer [0.078105s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-96436f0f-1a3e-45d7-bbbc-7388887ac503 X-Openstack-Ironic-Api-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.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_unsupported [0.049603s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_061_lessee_member_cannot_patch_retired [0.079198s] ... 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-9d0bdd3b-8ea1-49e2-90d0-3aea7fc4ff41 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.conductor.test_utils.NodeGetBootModeTestCase.test_node_get_boot_mode_valid [0.042510s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_151_nodes_portgroups_get_reader [0.084063s] ... 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-abff9236-4d0e-4018-aa1a-a323160b3325 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_214_drivers_properties_get_admin [0.067111s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-36020933-c2da-4104-8075-2f0da5385e29 X-Openstack-Ironic-Api-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.conf.test_auth.AuthConfTestCase.test_add_auth_opts [0.027738s] ... ok {0} ironic.tests.unit.conf.test_types.ExplicitAbsolutePath.test_explicit_absolute_path [0.020972s] ... ok {0} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list [0.030527s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_062_owner_admin_can_patch_node_instance_info [0.117924s] ... 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-60f5788e-45ec-443d-8e68-5fcd1bab4008 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_152_nodes_portgroups_get_service [0.088528s] ... 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-290b5d00-93fa-42a4-b075-aec9eafb1a40 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_215_drivers_properties_get_member [0.084413s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6427c2d0-2d64-424b-9c76-3a2fcc6c56bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list_duplicate [0.036807s] ... ok {0} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_create_bios_setting_list_node_not_exist [0.032454s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_153_nodes_portgroups_get_service_project [0.079061s] ... 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-61e6873f-1120-4a2c-9468-8e9ace1b9a5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_063_owner_manager_can_patch_node_instance_info [0.108648s] ... 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-30ee3604-199b-4520-97f7-b73dc19f4eaa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list [0.056824s] ... ok {0} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list_node_not_exist [0.031033s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_154_nodes_portgroups_detail_get_admin [0.076739s] ... 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-f3f6970b-7bad-4b7d-8350-5ad2aa10ca60 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": "2026-04-12T07:47:34.621530+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.db.test_bios_settings.DbBIOSSettingTestCase.test_delete_bios_setting_list_setting_not_exist [0.034128s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_064_owner_member_can_patch_node_instance_info [0.108218s] ... 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-b33cd91f-01d2-4048-8bbd-3445847a72d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting [0.034106s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_155_nodes_portgroups_detail_get_member [0.082032s] ... 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-9cdb547f-8b5f-447c-bdfd-5a9594949534 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": "2026-04-12T07:47:34.701509+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.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_list [0.042484s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_065_owner_reader_can_patch_node_instance_info [0.069298s] ... 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-ecec9b13-1ffd-41ac-ba7c-1f904ef17235 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_list_node_not_exist [0.031505s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_216_drivers_properties_get_observer [0.284774s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2523b03a-8b1e-467c-afe4-0d1e494713c2 X-Openstack-Ironic-Api-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.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_node_not_exist [0.033568s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_156_nodes_portgroups_detail_get_reader [0.090444s] ... 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-ec9b874a-c504-402a-9921-460cc528d30a 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": "2026-04-12T07:47:34.797241+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.db.test_bios_settings.DbBIOSSettingTestCase.test_get_bios_setting_setting_not_exist [0.038159s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin [0.070018s] ... 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-c9cc90c5-6625-4b91-a1df-65f8187c2556 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_066_lessee_admin_can_patch_node_instance_info [0.107938s] ... 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-75acab2b-dbd6-4513-b35c-3972f8dcf605 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list [0.039079s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_157_nodes_portgroups_detail_get_service [0.088309s] ... 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-35e1ef15-ce1a-416b-bba8-2cf545e432bf 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": "2026-04-12T07:47:34.883458+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_218_drivers_raid_logical_disk_properties_get_member [0.062758s] ... 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-ed1a656f-a73c-423f-b0bd-dc82d09ebb65 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list_node_not_exist [0.032909s] ... ok {0} ironic.tests.unit.db.test_bios_settings.DbBIOSSettingTestCase.test_update_bios_setting_list_setting_not_exist [0.036695s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_158_nodes_portgroups_detail_get_service_project [0.066737s] ... 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-99699a9b-2fb1-4304-ac06-ba531bea6362 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_219_drivers_raid_logical_disk_properties_get_observer [0.064977s] ... 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-7b9aca2c-0139-4dd9-875a-0553f44b5de6 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_067_lessee_manager_can_patch_node_instance_info [0.108940s] ... 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-8ea2c731-6b70-4c3d-8f52-6a93a2ac448e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_firmware_component.DbFirmwareComponentTestCase.test_create_firmware_component [0.035548s] ... ok {0} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_create_firmware_component_duplicate [0.029842s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin [0.070250s] ... 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-23706b45-e27e-4ea6-98af-be73b2182544 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_159_ports_get_admin [0.081401s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-34e2fbff-5758-461e-91ae-da7c0b822c6e 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.test_acl.TestRBACProjectScoped.test_project_scoped_068_lessee_member_cannot_patch_node_instance_info [0.081518s] ... 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-8bdea358-50c3-43db-9b28-cfd0a63e04ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_delete_firmware_component_list [0.042861s] ... ok {0} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component [0.031765s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member [0.068290s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-07690658-45f3-4691-b2f7-37c75f5bc5ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_160_ports_get_service [0.070574s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4300960e-8601-44d4-aec6-edae5452a589 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.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component_list [0.034544s] ... ok {0} ironic.tests.unit.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component_list_node_not_exist [0.025925s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_069_lessee_reader_can_patch_node_instance_info [0.100421s] ... 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-7303f8c3-7363-4af4-9edd-fbe0d396fb11 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_222_drivers_vendor_passthru_methods_get_observer [0.062754s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c25e91d5-c711-4946-ad70-4f5d5b06ab8d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component_node_not_exist [0.029932s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_161_ports_get_service_project [0.064799s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fd4f12b6-d57b-4fe5-83cd-fea11675e877 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.db.test_firmware_component.DbFirmwareComponentTestCase.test_get_firmware_component_setting_not_exist [0.034838s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_070_third_party_admin_cannot_patch_node_instance_info [0.078461s] ... 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-bece9ea2-8fbd-4205-b4f4-1ea7347120cc X-Openstack-Ironic-Api-Maximum-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.db.test_firmware_component.DbFirmwareComponentTestCase.test_update_firmware_component_not_exist [0.030578s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_162_ports_get_service_project_disabled [0.064187s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9031680d-82ce-4844-bdc0-3e0fb47fbf5b 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_223_drivers_vendor_passthru_get_admin [0.082575s] ... 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-6c8d6a75-9078-442c-a6d5-a47afdc4c4d4 X-Openstack-Ironic-Api-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.db.test_firmware_component.DbFirmwareComponentTestCase.test_update_firmware_components [0.032881s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_071_owner_admin_cannot_delete_nodes [0.069568s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cad5f18c-deec-4811-ba6d-d1bddf3c3d31 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag [0.031061s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_163_ports_get_member [0.067990s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2801698e-40ba-481b-8f96-b30d523d1dd0 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_224_drivers_vendor_passthru_get_member [0.082901s] ... 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-4950ebed-b879-4d2c-a79c-459e2cb42855 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_duplicate [0.034955s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_add_node_tag_node_not_exist [0.027055s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_072_owner_admin_can_delete_nodes [0.082399s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b67e846f-f476-4e5c-9617-b084ea007f24 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_164_ports_get_reader [0.071838s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-45131bd8-d743-48ee-bf52-656cfcd05cee 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_225_drivers_vendor_passthru_get_observer [0.071096s] ... 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-214dbe2e-7e50-46cb-aa49-afdcc129efbd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag [0.043619s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_node_not_found [0.026262s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_073_service_cannot_delete_owner_admin_nodes [0.067126s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-78fc4880-a849-4dad-b715-9596aa57052f X-Openstack-Ironic-Api-Maximum-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.test_acl.TestRBACScopedRequests.test_system_scoped_165_ports_post_admin [0.078969s] ... 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-a660517b-3ca8-4ef1-8d2f-7e5e97ee54e6 X-Openstack-Ironic-Api-Maximum-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_226_drivers_vendor_passthru_post_admin [0.066976s] ... 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-40a59417-117a-40b9-a719-159ec16b8c65 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_delete_node_tag_not_found [0.038532s] ... ok {0} ironic.tests.unit.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_by_node_id [0.030843s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_074_service_can_delete_nodes_in_own_project [0.067975s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-051ff3c0-e516-49ff-a3c0-d4b183058688 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_227_drivers_vendor_passthru_post_member [0.063354s] ... 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-4beb591c-b092-48e8-953e-d10d0c8ed52c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_empty [0.033494s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_166_ports_post_member [0.077117s] ... 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-2f32f43f-3092-4985-b06b-9d859388602b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_get_node_tags_node_not_exist [0.032289s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_075_owner_manager_cannot_delete_nodes [0.076997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d3630493-2209-403b-b92c-2479276688e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_228_drivers_vendor_passthru_post_observer [0.081699s] ... 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-9e3f92e7-d4fa-4b25-8aee-5d5598424525 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_node_tag_exists [0.050228s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_167_ports_post_reader [0.087155s] ... 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-12e3d2f0-96dd-494b-be47-21c8aa0fe37f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_node_tag_node_not_exist [0.033148s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_076_lessee_admin_cannot_delete_nodes [0.071787s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7ab42bbb-bbda-4741-8eb8-e264218ae65a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_229_drivers_vendor_passthru_put_admin [0.069474s] ... 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-b7044de2-a286-49fe-bf02-3cdffd1227d8 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_node_tag_not_exists [0.032781s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_168_ports_detail_get_admin [0.067532s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-875ef5fa-001a-4841-b3b8-6ce6a7a3b857 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": "2026-04-12T07:47:35.704900+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.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags [0.036627s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_077_lessee_manager_cannot_delete_nodes [0.076379s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5eef32a5-b7da-4854-8b20-629565b71454 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_duplicate [0.034065s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_230_drivers_vendor_passthru_put_member [0.080979s] ... 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-a1e2efc0-2bd1-4906-a8d6-5a74b94bb288 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_169_ports_detail_get_member [0.068917s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2616b772-fdc3-4505-bfef-a60a05840415 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": "2026-04-12T07:47:35.773770+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.db.test_node_tags.DbNodeTagTestCase.test_set_node_tags_node_not_exist [0.031748s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_078_third_party_admin_cannot_delete_nodes [0.070041s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-11fe9047-203f-42e5-bf9c-050f179f76cf X-Openstack-Ironic-Api-Maximum-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.db.test_node_tags.DbNodeTagTestCase.test_unset_empty_node_tags [0.033327s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_231_drivers_vendor_passthru_put_observer [0.065017s] ... 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-217eab45-b056-4d20-94e7-d2bc29d398df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_170_ports_detail_get_reader [0.066983s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-850be74d-6ef5-42be-a70a-c1e5205dee23 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": "2026-04-12T07:47:35.843808+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.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags [0.053649s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin ... SKIPPED: not updated for scope testing {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_079_owner_admin_can_validate_node [0.084105s] ... 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-96361530-0ec6-4757-8b62-79312b5fb9ca X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_171_ports_port_id_get_admin [0.070832s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1459b03d-41b1-4fdd-a8b8-12acde0f1303 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": "2026-04-12T07:47:35.912404+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.db.test_node_tags.DbNodeTagTestCase.test_unset_node_tags_node_not_exist [0.037585s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer ... SKIPPED: not updated for scope testing {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_address [0.029336s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_080_owner_manager_can_validate_node [0.072966s] ... 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-f18c81b6-5e2a-4f66-a057-0bbc85bde102 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_172_ports_port_id_get_member [0.069069s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-199a2c70-b955-4470-9d55-bb17131b0fcc 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": "2026-04-12T07:47:35.985157+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.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_name [0.035639s] ... ok {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_duplicated_uuid [0.029129s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_234_nodes_bios_get_admin [0.073893s] ... 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-e1f475e0-e060-4042-ba7e-ef08a7c53aa2 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": "2026-04-12T07:47:36.025535+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.TestRBACProjectScoped.test_project_scoped_081_lessee_admin_can_validate_node [0.080609s] ... 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-ef75aaa6-fbca-43bb-a964-434fc8eb0793 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_portgroups.DbportgroupTestCase.test_create_portgroup_no_mode [0.043618s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_173_ports_port_id_get_reader [0.078776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-20c36b23-655a-4763-947e-93f925a7c2fb 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": "2026-04-12T07:47:36.063707+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_235_nodes_bios_get_member [0.066572s] ... 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-74c50983-dfaa-4073-b2e7-8790efdbb409 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup [0.033373s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_082_lessee_manager_can_validate_node [0.071282s] ... 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-cdddbd91-7df8-4532-8a26-92b82d47fa7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_not_empty [0.032606s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_174_ports_port_id_patch_admin [0.095918s] ... 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-a6401b70-ebf4-4eb3-b2f0-063c2f89de29 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_that_does_not_exist [0.033004s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_236_nodes_bios_get_observer [0.090294s] ... 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-c5bec5aa-4a54-4eef-8753-9aa939c68a3b 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": "2026-04-12T07:47:36.172048+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.TestRBACProjectScoped.test_project_scoped_083_owner_member_can_validate_node [0.070696s] ... 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-99949a27-a0c5-4cf8-af66-73b7ba7dba21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_portgroups.DbportgroupTestCase.test_destroy_portgroup_uuid [0.043394s] ... ok {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address [0.033298s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin [0.076182s] ... 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-c4142e70-f9a8-4356-a328-2d52cb1911a4 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": "2026-04-12T07:47:36.258819+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.test_acl.TestRBACScopedRequests.test_system_scoped_175_ports_port_id_patch_member [0.097861s] ... 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-487546fd-8935-4a9f-8c15-a9118ad35a96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_084_lessee_member_cannot_validate_node [0.075160s] ... 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-51d1800a-a6ec-4673-af5b-7f705e3178a5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_address_that_does_not_exist [0.043433s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_238_nodes_bios_bios_setting_get_member [0.071655s] ... 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-1144d4d1-006d-4dac-a9cc-5d28a953a944 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_085_third_party_admin_cannot_validate_node [0.068203s] ... 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-056f5518-807c-4d2d-b8f6-35ba34300510 X-Openstack-Ironic-Api-Maximum-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_239_nodes_bios_bios_setting_get_observer [0.073930s] ... 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-4620e619-5143-4238-bfb8-d46bc8913fb6 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": "2026-04-12T07:47:36.408612+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"}]}} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_086_owner_admin_can_set_maintenance [0.071972s] ... 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-532d4cb0-a68a-4d69-b8de-745fe0fefb0c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_240_conductors_get_admin [0.073458s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-75980d70-8019-4ee3-a44d-88ad95f0731a 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}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_087_owner_manager_can_set_maintenance [0.071220s] ... 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-45d30045-5bba-4fc4-9c42-4008bfea6371 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_241_conductors_get_member [0.066628s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-affde1d4-2203-4ed7-932d-6661f93d3316 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id [0.283667s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_176_ports_port_id_patch_reader [0.324269s] ... 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-ad8942c9-e37c-470b-bef4-ac35dacc41a5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_088_lessee_admin_can_set_maintenance [0.140612s] ... 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-f63f964b-3196-43a8-b7a9-0795286394e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_id_that_does_not_exist [0.065551s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_242_conductors_get_observer [0.100250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1aed5f3b-b1ec-46e6-80c9-ab58879eb3b4 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.test_acl.TestRBACScopedRequests.test_system_scoped_177_ports_port_id_delete_admin [0.110168s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3894041e-5c9b-4987-9bfd-5b499a2a0cee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name [0.060841s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_089_lessee_manager_can_set_maintenance [0.098725s] ... 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-c95ca4d9-1452-4fab-ad8e-a0fc6c901c2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.087116s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-32c37880-5e27-4c5d-9e68-c95348072568 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": "2026-04-12T07:47:36.734314+00:00", "updated_at": "2026-04-12T07:47:36.734930+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} {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_name_that_does_not_exist [0.030659s] ... ok {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid [0.029741s] ... ok {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_by_uuid_that_does_not_exist [0.027585s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_178_ports_port_id_delete_member [0.111558s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a81755e0-f065-4a81-a8f7-7acd9b1441fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_244_conductors_hostname_get_member [0.099814s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ca95a0de-c85b-4d4d-986c-c220f739cb3d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list [0.048347s] ... ok {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroup_list_sorted [0.036128s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_179_ports_port_id_delete_reader [0.083594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-68940092-361e-438b-a901-bcfdf78b64af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id [0.032704s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_245_conductors_hostname_get_observer [0.082128s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cd58da94-c57a-4ff5-bded-a0d92effd073 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": "2026-04-12T07:47:36.924185+00:00", "updated_at": "2026-04-12T07:47:36.924824+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} {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_get_portgroups_by_node_id_that_does_not_exist [0.029618s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_180_nodes_ports_get_admin [0.070196s] ... 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-1d4f1928-1126-490b-a9bd-df20f83454ea 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.db.test_portgroups.DbportgroupTestCase.test_update_portgroup [0.031321s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_246_allocations_post_admin [0.069504s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8a1e1518-ea30-452e-9619-f8ce1dd92024 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_address [0.032128s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_181_nodes_ports_get_member [0.067243s] ... 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-2f95119d-6cd7-4c12-87d6-31d1b5bfa205 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.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_duplicated_name [0.033021s] ... ok {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.TestRBACProjectScoped.test_project_scoped_090_owner_member_can_set_maintenance [0.321833s] ... 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-0746996c-e58f-42e2-b079-eb5e81bffdb0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_not_found [0.030432s] ... ok {0} ironic.tests.unit.db.test_portgroups.DbportgroupTestCase.test_update_portgroup_uuid [0.025768s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_182_nodes_ports_get_reader [0.070524s] ... 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-14e45cea-b028-4478-8108-65df25dfa16f 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_248_allocations_post_observer [0.071676s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7d8d9f74-717b-4fd6-bf7a-0eb7cde99a5b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_091_lessee_member_cannot_set_maintenance [0.067576s] ... 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-58b4eb36-1a8f-4afe-9acc-350abdc67c3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target [0.030265s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_nodeid_and_bootindex [0.026517s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_183_nodes_ports_detail_get_admin [0.069166s] ... 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-d57d0986-a6d5-40fe-8f1a-e01957ef94b1 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": "2026-04-12T07:47:37.174828+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.db.test_volume_targets.DbVolumeTargetTestCase.test_create_volume_target_duplicated_uuid [0.028033s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_092_third_party_admin_cannot_set_maintenance [0.070253s] ... 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-40f2e149-779e-4c05-a466-e4da6f634bad X-Openstack-Ironic-Api-Maximum-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_249_allocations_get_admin [0.071987s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-be7e2439-a1f8-43ff-8c59-9d8f53f030a9 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": "24a60d51-8857-4c67-81fd-9537de511631", "created_at": "2026-04-12T07:47:37.180760+00:00", "updated_at": "2026-04-12T07:47:37.185091+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/24a60d51-8857-4c67-81fd-9537de511631", "rel": "self"}, {"href": "http://localhost/allocations/24a60d51-8857-4c67-81fd-9537de511631", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_destroy_volume_target [0.032551s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_184_nodes_ports_detail_get_member [0.072026s] ... 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-b317914e-c140-4b88-8098-57384e53cd87 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": "2026-04-12T07:47:37.244023+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.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_id [0.037118s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_093_owner_admin_can_unset_maintenance [0.071200s] ... 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-1bc2f508-9e92-43a2-a252-a2e8ad8dee98 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_250_allocations_get_member [0.071293s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-37ce5974-7d25-4c74-9ddb-d786e01d299f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_by_uuid [0.047715s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_185_nodes_ports_detail_get_reader [0.070263s] ... 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-c6eab2c8-60ce-41f8-9569-4e4d1d859b55 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": "2026-04-12T07:47:37.318715+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.TestRBACProjectScoped.test_project_scoped_094_owner_manager_can_unset_maintenance [0.070144s] ... 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-f41ac9b6-7dd8-4a22-bbc0-7af59107cb81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list [0.044551s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_target_list_sorted [0.031565s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_186_portgroups_ports_get_admin [0.070154s] ... 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-f9280d1a-38bb-4fa1-9947-48db436911a0 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.TestRBACProjectScoped.test_project_scoped_095_lessee_admin_can_unset_maintenance [0.068619s] ... 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-09018ed5-efcd-4a58-a103-0be69295dc05 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id [0.037293s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_node_id_that_does_not_exist [0.030889s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_187_portgroups_ports_get_member [0.070974s] ... 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-ef188610-7caf-40ec-965b-3c04b8120b59 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.TestRBACProjectScoped.test_project_scoped_096_lessee_manager_can_unset_maintenance [0.069959s] ... 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-8494a623-4851-4cc6-b152-e14f5a252566 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id [0.033129s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_get_volume_targets_by_volume_id_that_does_not_exist [0.026500s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target [0.026273s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_188_portgroups_ports_get_reader [0.074956s] ... 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-66757365-959d-45bd-b25f-e28ac987bbdf 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_251_allocations_get_observer [0.275263s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5eba8409-c0ac-45f0-bbfd-2ad69b783370 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": "dacf39c9-0b57-4dfb-9908-9bedd4478279", "created_at": "2026-04-12T07:47:37.528348+00:00", "updated_at": "2026-04-12T07:47:37.532421+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/dacf39c9-0b57-4dfb-9908-9bedd4478279", "rel": "self"}, {"href": "http://localhost/allocations/dacf39c9-0b57-4dfb-9908-9bedd4478279", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_097_owner_member_can_unset_maintnenance [0.071178s] ... 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-1ebc6aa8-6bb0-49f6-9d50-0389fa347dc1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_duplicated_nodeid_and_bootindex [0.032112s] ... ok {0} ironic.tests.unit.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_fails_invalid_id [0.027599s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_189_portgroups_ports_detail_get_admin [0.073173s] ... 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-9028c4ff-a787-4219-95a9-7d5a2b2cde6f 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_252_allocations_allocation_id_get_admin [0.069084s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/41009703-fd34-4dc4-84ff-a90c3b44a950 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2ce75503-6122-43b9-91fe-3c8b3f028b64 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "41009703-fd34-4dc4-84ff-a90c3b44a950", "created_at": "2026-04-12T07:47:37.602802+00:00", "updated_at": "2026-04-12T07:47:37.607468+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/41009703-fd34-4dc4-84ff-a90c3b44a950", "rel": "self"}, {"href": "http://localhost/allocations/41009703-fd34-4dc4-84ff-a90c3b44a950", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_098_lessee_member_cannot_unset_maintenance [0.071591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/38d5abed-c585-4fce-a57e-a2ffc2a2ec6f/maintenance GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a83db41d-66ea-4481-aef4-e51bc118d7cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.db.test_volume_targets.DbVolumeTargetTestCase.test_update_volume_target_uuid [0.031372s] ... ok {0} ironic.tests.unit.dhcp.test_factory.CompareBasetoModules.test_drivers_match_dhcp_base [0.018475s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_253_allocations_allocation_id_get_member [0.065158s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/a09357cb-d522-48e5-84fb-b8a2fae38cda WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e430c57d-54a1-4c8d-ada7-0dc3029c6451 X-Openstack-Ironic-Api-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 a09357cb-d522-48e5-84fb-b8a2fae38cda could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_190_portgroups_ports_detail_get_member [0.069555s] ... 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-2cb35c65-2070-47df-acbb-d6ff263deda0 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.TestRBACProjectScoped.test_project_scoped_099_third_party_admin_cannot_unset_maintenance [0.066707s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/72a47e1c-f89f-4dac-a50e-137e003a439b/maintenance GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-86f443ee-db2b-438e-8141-a2d50b871c28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 72a47e1c-f89f-4dac-a50e-137e003a439b could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task [0.059758s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_254_allocations_allocation_id_get_observer [0.068838s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/8adc18c9-bfe1-4bfa-8e57-1e2bf5c17738 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7b261251-dcfe-43c1-8d12-10b19327af35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8adc18c9-bfe1-4bfa-8e57-1e2bf5c17738", "created_at": "2026-04-12T07:47:37.739151+00:00", "updated_at": "2026-04-12T07:47:37.743349+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/8adc18c9-bfe1-4bfa-8e57-1e2bf5c17738", "rel": "self"}, {"href": "http://localhost/allocations/8adc18c9-bfe1-4bfa-8e57-1e2bf5c17738", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_191_portgroups_ports_detail_get_reader [0.070621s] ... 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-463e71c6-2b10-4e8f-876f-c16d9a34226d 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.TestRBACProjectScoped.test_project_scoped_100_owner_admin_can_set_boot_device [0.067449s] ... 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-f930d737-a86b-43c3-b92e-5ec1517ec212 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_failed [0.055253s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_missing [0.049907s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_192_volume_get_admin [0.061932s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-99590260-88b8-4623-b5c9-31c464dc226c 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_255_allocations_allocation_id_patch_admin [0.084798s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/c6427e69-e8a7-4cd4-b22d-243adec7168c WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d8a480a3-1c22-4f69-ab1e-b3ef6c1f7dad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c6427e69-e8a7-4cd4-b22d-243adec7168c", "created_at": "2026-04-12T07:47:37.811984+00:00", "updated_at": "2026-04-12T07:47:37.859643+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/c6427e69-e8a7-4cd4-b22d-243adec7168c", "rel": "self"}, {"href": "http://localhost/allocations/c6427e69-e8a7-4cd4-b22d-243adec7168c", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_101_owner_manager_can_set_boot_device [0.076896s] ... 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-c9bd7538-05e7-4035-9515-7d3e6dfb47ea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed [0.055762s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_193_volume_get_member [0.057664s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7fc7c39e-058c-47c1-af24-86e1fe3bac48 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_256_allocations_allocation_id_patch_member [0.068552s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/311ff5af-a225-4363-af11-34a16637f131 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-58ecfc3b-7fe6-43cb-851d-9acf35898bff X-Openstack-Ironic-Api-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 311ff5af-a225-4363-af11-34a16637f131 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_102_lessee_admin_cannot_set_boot_device [0.070887s] ... 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-19e47e69-9c54-48ad-8232-d6c9e547d31a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_partial_failed_idrac5 [0.060857s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_194_volume_get_reader [0.062771s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e02e25be-73f7-47be-ad5d-62afc4defc31 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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_still_processing [0.046749s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_257_allocations_allocation_id_patch_observer [0.073706s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/ffbddbbd-94c9-4d06-a9ec-04b30451321b WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0fa5a9ca-f3c5-426a-99e3-8020517cf768 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_103_lessee_manager_cannot_set_boot_device [0.071308s] ... 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-99074e9b-f303-450f-b661-4769c68711b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_195_volume_get_service [0.059170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93db26a1-06e4-4f3d-a3b5-3980dc95f9c0 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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export [0.056346s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_258_allocations_allocation_id_delete_admin [0.067886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/ea2fc545-742f-4b84-9cc5-92da9ef3f65d GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-94c8c516-d08f-421c-a16c-32430014ba13 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_104_owner_member_cannot_set_boot_device [0.067615s] ... 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-02352271-464c-4cdb-8a37-f6b14c2a91a5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_196_volume_get_service_project [0.058154s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d1108ba1-de4f-4193-8d98-e9750dff5181 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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__check_import_configuration_task_with_export_failed [0.051648s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_259_allocations_allocation_id_delete_member [0.067749s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/184b51e6-eaae-4de6-803d-f306660f021f GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f19b8ecd-5ba3-4e49-938d-ab443221c111 X-Openstack-Ironic-Api-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 184b51e6-eaae-4de6-803d-f306660f021f could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_not_drac [0.034933s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_197_volume_connectors_get_admin [0.067279s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-17a53852-09d4-4a93-90ab-95d1c377fda1 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": "d54f88c0-f882-49ad-8817-29f0a54dc863", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/d54f88c0-f882-49ad-8817-29f0a54dc863", "rel": "self"}, {"href": "http://localhost/volume/connectors/d54f88c0-f882-49ad-8817-29f0a54dc863", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_105_lessee_member_cannot_set_boot_device [0.070848s] ... 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-6308c88e-6435-45e5-9768-90f1be353a64 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status [0.034587s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_260_allocations_allocation_id_delete_observer [0.064438s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/3b79dff1-e203-417e-9e2c-1cc4569db825 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cc42d547-2a96-408d-a658-731653e79f4c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_198_volume_connectors_get_member [0.065033s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-28e62bef-eeb4-4da5-b40a-1c49bb6c0963 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": "55529c8a-159c-4e4e-aab9-bc877cd98bdb", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/55529c8a-159c-4e4e-aab9-bc877cd98bdb", "rel": "self"}, {"href": "http://localhost/volume/connectors/55529c8a-159c-4e4e-aab9-bc877cd98bdb", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_no_task_monitor_url [0.033830s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_106_third_party_admin_cannot_set_boot_device [0.068816s] ... 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-4e51e08a-8156-4095-b515-cf0dca2d51eb X-Openstack-Ironic-Api-Maximum-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_locked [0.035268s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_199_volume_connectors_get_reader [0.063926s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-375fee4a-e1b5-45d5-b8ae-977b4add8753 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": "2b410b0d-bfe3-41ca-9f94-16355dfcd433", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/2b410b0d-bfe3-41ca-9f94-16355dfcd433", "rel": "self"}, {"href": "http://localhost/volume/connectors/2b410b0d-bfe3-41ca-9f94-16355dfcd433", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_261_nodes_allocation_get_admin [0.072940s] ... 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-4a8c09ab-7884-4233-9c58-03924a98ae7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "3e6329a9-167f-46d1-a53b-ca9a1d9bbb78", "created_at": "2026-04-12T07:47:38.243580+00:00", "updated_at": "2026-04-12T07:47:38.247616+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/3e6329a9-167f-46d1-a53b-ca9a1d9bbb78", "rel": "self"}, {"href": "http://localhost/allocations/3e6329a9-167f-46d1-a53b-ca9a1d9bbb78", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__query_import_configuration_status_node_notfound [0.036522s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_107_owner_admin_can_get_boot_device [0.067015s] ... 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-7da6e1c2-c397-4b44-8bdf-722b1ccccc9c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_clean [0.046920s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_200_volume_connectors_get_service [0.066094s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d4a9f147-3b15-4f44-923f-8eb47f5f6b0e 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": "e7ae33e0-8ee4-4d4e-85b0-4ef227949e78", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/e7ae33e0-8ee4-4d4e-85b0-4ef227949e78", "rel": "self"}, {"href": "http://localhost/volume/connectors/e7ae33e0-8ee4-4d4e-85b0-4ef227949e78", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_262_nodes_allocation_get_member [0.067048s] ... 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-31bf9e68-ca70-4a9a-af29-df9b7089d3a3 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_108_owner_manager_can_get_boot_device [0.066979s] ... 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-d71ecc8b-aa79-430f-904c-a31dbc52b84d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_failed_deploy [0.049255s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_201_volume_connectors_get_service_project [0.066747s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1f733ba6-3343-42af-b384-6aabcf175611 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": "8f0453c5-1207-49c1-9397-573bcc6aa34a", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/8f0453c5-1207-49c1-9397-573bcc6aa34a", "rel": "self"}, {"href": "http://localhost/volume/connectors/8f0453c5-1207-49c1-9397-573bcc6aa34a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_109_lessee_admin_cannot_get_boot_device [0.066254s] ... 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-41c287b3-4f46-46fa-9a77-0f09f8df5f34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_263_nodes_allocation_get_observer [0.071910s] ... 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-c69dd622-e846-4f41-9442-65692405651a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "41d687a3-0828-458d-9de3-15bfc4426d19", "created_at": "2026-04-12T07:47:38.384980+00:00", "updated_at": "2026-04-12T07:47:38.389168+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/41d687a3-0828-458d-9de3-15bfc4426d19", "rel": "self"}, {"href": "http://localhost/allocations/41d687a3-0828-458d-9de3-15bfc4426d19", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_clean [0.049957s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_202_volume_connectors_get_service_project_disable [0.063590s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8287c3d9-9e94-453c-9d9e-90d8fcac532f 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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__set_success_deploy [0.046913s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_110_owner_member_cannot_get_boot_device [0.068149s] ... 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-b91dce9a-af9b-45c9-80a9-58257855aec7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_264_nodes_allocation_delete_admin [0.070065s] ... 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-fcffff5b-0bfa-4f0f-b3a1-cb8627e99b77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold [0.030275s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_empty [0.028247s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_203_volume_connectors_post_admin [0.075493s] ... 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/ed77fc72-10d6-4ae5-93e8-1d1a0041d503 Openstack-Request-Id: req-5a650e96-3601-4850-b531-90ecc71aa805 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ed77fc72-10d6-4ae5-93e8-1d1a0041d503", "created_at": "2026-04-12T07:47:38.551229+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/ed77fc72-10d6-4ae5-93e8-1d1a0041d503", "rel": "self"}, {"href": "http://localhost/volume/connectors/ed77fc72-10d6-4ae5-93e8-1d1a0041d503", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_265_nodes_allocation_delete_member [0.066884s] ... 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-9dee19e2-786a-4f54-bfb7-ea90dbb525b5 X-Openstack-Ironic-Api-Maximum-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_111_lessee_member_cannot_get_boot_device [0.067773s] ... 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-bdc67d5a-6159-4a93-9d46-9ddcf38d1197 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_data_missing [0.030963s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_missing [0.028231s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_interface_not_supported [0.026998s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_266_nodes_allocation_delete_observer [0.067766s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d9a5f0c4-d0b9-48c1-9baa-ca2f770c3b90 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_112_owner_reader_cannot_get_boot_device [0.068015s] ... 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-f0df42b7-d1ad-4bd0-ab51-a3ad4603ee86 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_204_volume_connectors_post_member [0.079862s] ... 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/a58a4af7-c50a-4b5b-bf34-f28f747dc4e8 Openstack-Request-Id: req-804f96a9-0de6-4200-b5e3-6401b42779d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a58a4af7-c50a-4b5b-bf34-f28f747dc4e8", "created_at": "2026-04-12T07:47:38.635088+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/a58a4af7-c50a-4b5b-bf34-f28f747dc4e8", "rel": "self"}, {"href": "http://localhost/volume/connectors/a58a4af7-c50a-4b5b-bf34-f28f747dc4e8", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test__validate_conf_mold_oem_missing [0.031025s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_113_lessee_reader_cannot_get_boot_device [0.067016s] ... 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-57b0c8ae-a260-4277-bf8e-6f3152c5f29d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_205_volume_connectors_post_reader [0.065657s] ... 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-7a4a11c8-f728-4806-b0be-2c6183e1c570 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_267_deploy_templates_post_admin [0.074577s] ... 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/6d2a29de-4846-4b98-a6d4-b77c74c588fd Openstack-Request-Id: req-8b64fcc2-3021-46bd-9e5e-b1537af38779 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6d2a29de-4846-4b98-a6d4-b77c74c588fd", "created_at": "2026-04-12T07:47:38.707309+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/6d2a29de-4846-4b98-a6d4-b77c74c588fd", "rel": "self"}, {"href": "http://localhost/deploy_templates/6d2a29de-4846-4b98-a6d4-b77c74c588fd", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue [0.050006s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_clean_step [0.049692s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_114_third_party_admin_cannot_get_boot_device [0.067257s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/e8e06fb5-c4aa-4deb-bf35-6e913269d3e1/management/boot_device WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f10c3fd7-810c-4855-af28-ab1f4738151f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node e8e06fb5-c4aa-4deb-bf35-6e913269d3e1 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_206_volume_connectors_post_service [0.068902s] ... 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/ca0bb459-69fc-4096-81e5-c4d238330c7b Openstack-Request-Id: req-76d31a64-e755-4507-b6f4-d2d4385c8b53 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ca0bb459-69fc-4096-81e5-c4d238330c7b", "created_at": "2026-04-12T07:47:38.770655+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/ca0bb459-69fc-4096-81e5-c4d238330c7b", "rel": "self"}, {"href": "http://localhost/volume/connectors/ca0bb459-69fc-4096-81e5-c4d238330c7b", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_268_deploy_templates_post_member [0.069805s] ... 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-07403750-d5c2-4bd9-a1ff-e10f433f94fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_clear_job_queue_missing_attr_verify_step [0.054216s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_115_owner_admin_can_get_supported_boot_devices [0.067680s] ... 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-f2d6df79-5b01-4dfe-859e-488ce1aef74b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_207_volume_connectors_post_service_project [0.069000s] ... 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/bad09590-6dc5-49ce-8c65-e4e2ebc79405 Openstack-Request-Id: req-8380a4c0-7ab8-4d8d-81e6-9c5b08e34148 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "bad09590-6dc5-49ce-8c65-e4e2ebc79405", "created_at": "2026-04-12T07:47:38.839930+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/bad09590-6dc5-49ce-8c65-e4e2ebc79405", "rel": "self"}, {"href": "http://localhost/volume/connectors/bad09590-6dc5-49ce-8c65-e4e2ebc79405", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_export_failed [0.029855s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_269_deploy_templates_post_observer [0.070878s] ... 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-9f43e8f2-643b-4cef-b6bb-651c3851158c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_name_missing [0.025895s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_export_configuration_success [0.033025s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_116_owner_manager_can_get_supported_boot_devices [0.068679s] ... 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-1ecbf4ad-037c-4593-ba75-3d69f899fa7c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_208_volume_volume_connector_id_get_admin [0.067070s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/5050f39e-5c4b-4e2b-8521-665f28636fef WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-934f0087-34c9-43f8-b718-74c2ad7132d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5050f39e-5c4b-4e2b-8521-665f28636fef", "created_at": "2026-04-12T07:47:38.886413+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/5050f39e-5c4b-4e2b-8521-665f28636fef", "rel": "self"}, {"href": "http://localhost/volume/connectors/5050f39e-5c4b-4e2b-8521-665f28636fef", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_270_deploy_templates_get_admin [0.067687s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b9e3af54-e080-4e33-b338-2b6dbc00da06 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": "d95c3d73-af6b-4a3c-bb59-a29b77b54a58", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/d95c3d73-af6b-4a3c-bb59-a29b77b54a58", "rel": "self"}, {"href": "http://localhost/deploy_templates/d95c3d73-af6b-4a3c-bb59-a29b77b54a58", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_117_owner_member_cannot_get_supported_boot_devices [0.065174s] ... 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-3d0ab10b-ab68-4c14-881e-22dc4c2e058e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_209_volume_volume_connector_id_get_member [0.066300s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/e0da5d13-8a7f-44cd-9df4-9ed409d6b6a6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-baa66ed9-2662-4c60-bd95-e9264cc14569 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e0da5d13-8a7f-44cd-9df4-9ed409d6b6a6", "created_at": "2026-04-12T07:47:38.953752+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/e0da5d13-8a7f-44cd-9df4-9ed409d6b6a6", "rel": "self"}, {"href": "http://localhost/volume/connectors/e0da5d13-8a7f-44cd-9df4-9ed409d6b6a6", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_271_deploy_templates_get_member [0.063389s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9c37ae7d-4e9d-47c3-b813-321640617f8d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_118_lessee_admin_cannot_get_supported_boot_devices [0.065606s] ... 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-ad9dc63a-804d-48b6-853e-d3dc61a21c0f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_210_volume_volume_connector_id_get_reader [0.066998s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/a02b6861-cb24-4f0c-8cfd-c5388822ce57 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a4d7befe-65cb-48e5-b4d5-5c24ca6b49ad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a02b6861-cb24-4f0c-8cfd-c5388822ce57", "created_at": "2026-04-12T07:47:39.021341+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/a02b6861-cb24-4f0c-8cfd-c5388822ce57", "rel": "self"}, {"href": "http://localhost/volume/connectors/a02b6861-cb24-4f0c-8cfd-c5388822ce57", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_272_deploy_templates_get_observer [0.064989s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-310a9ffb-becf-4ba1-9e17-f9d5172dceec 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": "9d6a3f7a-9403-4e64-bdc8-649dcf8f8484", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/9d6a3f7a-9403-4e64-bdc8-649dcf8f8484", "rel": "self"}, {"href": "http://localhost/deploy_templates/9d6a3f7a-9403-4e64-bdc8-649dcf8f8484", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_119_lessee_manager_cannot_get_supported_boot_devices [0.066504s] ... 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-ed7591f7-efce-4ae1-aa66-5b951b32bd6e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_273_deploy_templates_deploy_template_id_get_admin [0.067951s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/586bf51e-1728-46b7-9e43-e26dbc2d92bb WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab389558-5b2d-4784-840e-d4e54b1b16f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "586bf51e-1728-46b7-9e43-e26dbc2d92bb", "created_at": "2026-04-12T07:47:39.094769+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/586bf51e-1728-46b7-9e43-e26dbc2d92bb", "rel": "self"}, {"href": "http://localhost/deploy_templates/586bf51e-1728-46b7-9e43-e26dbc2d92bb", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_file_not_found [0.227167s] ... ok {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_incorrect_schema [0.029406s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_120_third_party_admin_cannot_get_supported_boot_devices [0.065951s] ... 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-c3483ae6-736a-4580-92d9-a5e5ea403904 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_name_missing [0.025851s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member [0.067264s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/cc457c3b-99b5-4fb0-8e8d-6667ac290308 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-516c3cb5-9ed7-4f4a-95aa-4e8c74e8618c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_configuration_success [0.040107s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_121_owner_admin_can_send_non_masking_interrupt [0.067523s] ... 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-2d7ca9ac-9fc6-4881-b992-ae65c8a0b4bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_import_export_configuration_success [0.034786s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer [0.078896s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/c3bfb526-a4eb-4a97-ac27-d28a23560168 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93f4eada-a662-4070-a1aa-70fcf8b31052 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c3bfb526-a4eb-4a97-ac27-d28a23560168", "created_at": "2026-04-12T07:47:39.241941+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/c3bfb526-a4eb-4a97-ac27-d28a23560168", "rel": "self"}, {"href": "http://localhost/deploy_templates/c3bfb526-a4eb-4a97-ac27-d28a23560168", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_known_good_state [0.048504s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_122_owner_manager_can_send_non_masking_interrupt [0.067458s] ... 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-9ad58686-affd-4b16-9c87-d0479fe5c37d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_211_volume_volume_connector_id_patch_admin [0.272511s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/85538844-a68e-4abb-a509-bf2f4bd74e90 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-a8ff960e-bd48-45d9-a993-2b7789083935 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_276_deploy_templates_deploy_template_id_patch_admin [0.091960s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/3d9e4764-4a3e-4b98-b1b5-ad6920e6c494 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-adb9937d-05d2-4ce6-bc65-78ea1aaf685c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "3d9e4764-4a3e-4b98-b1b5-ad6920e6c494", "created_at": "2026-04-12T07:47:39.313333+00:00", "updated_at": "2026-04-12T07:47:39.359224+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/3d9e4764-4a3e-4b98-b1b5-ad6920e6c494", "rel": "self"}, {"href": "http://localhost/deploy_templates/3d9e4764-4a3e-4b98-b1b5-ad6920e6c494", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac [0.051554s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_123_lessee_admin_cannot_send_non_masking_interrupt [0.066160s] ... 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-75344a22-b32f-4f11-a2b2-9ee25864188b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_212_volume_volume_connector_id_patch_member [0.071936s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/ddcaa475-8784-469e-99e8-b76b6c82ee7a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-86ae67a8-c6a9-477b-b666-1a50baf54bb6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_clean_step [0.054048s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member [0.068463s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/cfcdd41b-3365-43cf-98b1-5ccc628c4ca3 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-099c0a87-7c20-4c4c-918f-5e33406b69d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_124_lessee_manager_cannot_send_non_masking_interrupt [0.067600s] ... 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-ee62ac16-12b3-457b-88e1-d13c413e355b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_213_volume_volume_connector_id_patch_reader [0.066921s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/c0485ed4-e2bf-4fc8-9c65-ae82107b037b WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-50461026-0114-490f-9269-8349d39a0717 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.drac.test_management.DracRedfishManagementTestCase.test_reset_idrac_missing_attr_verify_step [0.055294s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer [0.068890s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/5385db54-bbbb-44e5-ac3a-af467ce3ce15 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0bc0f941-f2b4-4e71-86db-049fc6fff2cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_deploy_info [0.046949s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_214_volume_volume_connector_id_patch_service [0.073776s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/67c37e61-b8d9-4548-b9e7-1a63adc6ad48 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-0d79e58d-7bd6-4982-8149-c531421815d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_default_mode [0.048744s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin [0.069680s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/fa84e35e-dd03-4def-880b-30730dbb2c79 GOT Response: 204 No Content Openstack-Request-Id: req-f15510d1-c57a-4e27-998b-205c4d430fe7 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.test_acl.TestRBACScopedRequests.test_system_scoped_215_volume_volume_connector_id_delete_admin [0.065746s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/52909e2a-645e-49e6-a600-28939f8f56f3 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-f5e1caaf-4227-43cf-bc07-7791a3fc8d36 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_invalid_params [0.050238s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member [0.065363s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/b237589a-b910-4cab-ba20-5b6271dd2e6e GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c3af8178-d1b8-405e-8638-d296e923b52e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScopedRequests.test_system_scoped_216_volume_volume_connector_id_delete_member [0.065722s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/4e43f5f5-feb2-49e9-a21c-12f8d928f03d GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-cf28c787-1b56-4bff-9db2-a07f645c1fd1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__parse_driver_info_rescue_mode [0.049190s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer [0.062726s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/41e0cab0-be08-4ec8-8b32-ba32a70a84d7 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c3013732-99e4-4cb2-b79b-7ee113870adc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_http_image [0.039380s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_125_third_party_admin_cannot_send_non_masking_interrupt [0.262491s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/9d4977ad-0a57-4cb8-b802-0a8190d4ff69/management/inject_nmi WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5db5ce13-1c6b-443a-84bf-12660e36d583 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 9d4977ad-0a57-4cb8-b802-0a8190d4ff69 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_217_volume_volume_connector_id_delete_reader [0.062582s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/4b19ebd5-08b4-4f8c-b064-a35dc25289b4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3e40c1e7-f20a-4e7a-8f7c-9b1d45e424bb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_hrefs_https_image [0.041698s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_282_chassis_post_admin [0.071951s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/c84b79fb-6df5-43dc-9989-eeeb2a48557d Openstack-Request-Id: req-a03a34c6-2b3f-4793-bcad-a863d5b43f53 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c84b79fb-6df5-43dc-9989-eeeb2a48557d", "created_at": "2026-04-12T07:47:39.776700+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/c84b79fb-6df5-43dc-9989-eeeb2a48557d", "rel": "self"}, {"href": "http://localhost/chassis/c84b79fb-6df5-43dc-9989-eeeb2a48557d", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/c84b79fb-6df5-43dc-9989-eeeb2a48557d/nodes", "rel": "self"}, {"href": "http://localhost/chassis/c84b79fb-6df5-43dc-9989-eeeb2a48557d/nodes", "rel": "bookmark"}]]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_126_owner_reader_get_states [0.066590s] ... 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-eaad96fc-5962-405b-9683-e6c8e421dfb1 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.test_acl.TestRBACScopedRequests.test_system_scoped_218_volume_volume_connector_id_delete_service [0.064153s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/df76f296-bb84-45c4-8926-e40e642cfb18 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d2243f9e-bc26-4266-b361-2cdf4052fdc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test__validate_instance_image_info [0.044708s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_instance [0.038679s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_283_chassis_post_member [0.068263s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-65cb99cd-ea72-4244-9689-188d73fd1eaa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_127_lessee_reader_get_states [0.067244s] ... 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-d16f4e1d-cead-419e-9be3-b53fbf132a13 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.test_acl.TestRBACScopedRequests.test_system_scoped_219_volume_targets_get_admin [0.065985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-42742946-80ba-47c1-98db-1fba8a17c31c 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": "3dd0166d-740d-4ee5-bb1b-2dc8055f9cb3", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/3dd0166d-740d-4ee5-bb1b-2dc8055f9cb3", "rel": "self"}, {"href": "http://localhost/volume/targets/3dd0166d-740d-4ee5-bb1b-2dc8055f9cb3", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_clean_up_ramdisk [0.044039s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_284_chassis_post_observer [0.065771s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3664c448-8f90-4443-b1b6-c7a75c039fb2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_128_third_part_admin_cannot_get_states [0.065738s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/e6531020-0621-42f8-8d06-5460bfafc386/states WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2bc0beaa-be26-4c01-8610-a1926e47a394 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node e6531020-0621-42f8-8d06-5460bfafc386 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_220_volume_targets_get_member [0.063504s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-24535118-c808-4239-92b7-e621f07811e6 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": "cbf5a292-6bb8-4087-bbef-0107781097ac", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/cbf5a292-6bb8-4087-bbef-0107781097ac", "rel": "self"}, {"href": "http://localhost/volume/targets/cbf5a292-6bb8-4087-bbef-0107781097ac", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_boot_ramdisk [0.057612s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_local_or_whole_disk_image [0.042881s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_285_chassis_get_admin [0.069786s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aa7a215a-6697-4104-bf3f-e16b509568c4 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"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_129_owner_admin_can_put_power_state_change [0.069212s] ... 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-42666cdb-4127-4615-89cc-5b24d87db1f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_221_volume_targets_get_reader [0.065952s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4468af8a-8710-4dd1-b69d-3e35ec1dc1d8 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": "5ab8fded-6934-4702-822a-d4cabff98c14", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/5ab8fded-6934-4702-822a-d4cabff98c14", "rel": "self"}, {"href": "http://localhost/volume/targets/5ab8fded-6934-4702-822a-d4cabff98c14", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_instance_partition_image [0.052345s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_286_chassis_get_member [0.067007s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e3415edd-1805-4161-8507-2466ca3d5149 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_130_owner_manager_can_put_power_state_change [0.066051s] ... 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-cfb45e9b-c7d8-4ee8-ad50-780a08cb3068 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_222_volume_targets_get_service [0.069578s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a1ab0e95-043e-4900-9924-e320924e07a1 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": "91baa17d-aeb3-4074-a1aa-c7ee0ecc948d", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/91baa17d-aeb3-4074-a1aa-c7ee0ecc948d", "rel": "self"}, {"href": "http://localhost/volume/targets/91baa17d-aeb3-4074-a1aa-c7ee0ecc948d", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image [0.073768s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_131_lessee_admin_can_put_power_state_change [0.068542s] ... 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-010d4b05-9fdc-4117-985f-1fdac7591a28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_223_volume_targets_post_admin [0.075322s] ... 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/20ff85a5-b901-43ee-b0d6-557f96a21ba4 Openstack-Request-Id: req-7530f5e0-c00c-40c9-bceb-4f66bb3d3d66 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "20ff85a5-b901-43ee-b0d6-557f96a21ba4", "created_at": "2026-04-12T07:47:40.131360+00:00", "updated_at": null, "boot_index": 1, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/20ff85a5-b901-43ee-b0d6-557f96a21ba4", "rel": "self"}, {"href": "http://localhost/volume/targets/20ff85a5-b901-43ee-b0d6-557f96a21ba4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_glance_image_cleaning [0.069226s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_132_lessee_manager_can_put_power_state_change [0.069288s] ... 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-3a58cf08-5f5f-4982-a034-62723de0add0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_224_volume_targets_post_member [0.079640s] ... 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/1d4e3837-d7bb-4004-9216-20bd4c6258f4 Openstack-Request-Id: req-ec5fce32-821a-4b3b-8179-12c99507d63d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1d4e3837-d7bb-4004-9216-20bd4c6258f4", "created_at": "2026-04-12T07:47:40.209686+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1d4e3837-d7bb-4004-9216-20bd4c6258f4", "rel": "self"}, {"href": "http://localhost/volume/targets/1d4e3837-d7bb-4004-9216-20bd4c6258f4", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_middle_of_clean_step [0.082781s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_133_owner_member_can_put_power_state_change [0.072568s] ... 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-77886001-6dd2-4e53-b3aa-643ea1affd02 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_225_volume_targets_post_service [0.077997s] ... 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/97570071-508b-4708-844b-359a54ba04ce Openstack-Request-Id: req-f1ee2435-cf68-4131-9979-8d5e654df79b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "97570071-508b-4708-844b-359a54ba04ce", "created_at": "2026-04-12T07:47:40.291219+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/97570071-508b-4708-844b-359a54ba04ce", "rel": "self"}, {"href": "http://localhost/volume/targets/97570071-508b-4708-844b-359a54ba04ce", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image [0.065190s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_287_chassis_get_observer [0.288264s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a27ec277-a067-44e0-bb50-ef0c8a12437d 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"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_134_lessee_member_can_put_power_state_change [0.069725s] ... 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-69a01f4c-86ec-44c1-bbde-51e23627424c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_226_volume_targets_post_service_project [0.072430s] ... 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/34f55a5a-15b6-4d72-8e91-f9c029380135 Openstack-Request-Id: req-49066111-387d-4c14-b0fb-267ffb5595db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "34f55a5a-15b6-4d72-8e91-f9c029380135", "created_at": "2026-04-12T07:47:40.363097+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/34f55a5a-15b6-4d72-8e91-f9c029380135", "rel": "self"}, {"href": "http://localhost/volume/targets/34f55a5a-15b6-4d72-8e91-f9c029380135", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning [0.066275s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_288_chassis_detail_get_admin [0.065036s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-750917cb-fbc0-48b2-926a-72e94b3907f9 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": "2026-04-12T07:47:40.385181+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.TestRBACProjectScoped.test_project_scoped_135_owner_reader_cannot_put_power_state_change [0.069182s] ... 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-78ec4449-deb2-43bb-bd3b-c3da00f72bd7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_227_volume_targets_post_service_project_disabled [0.066395s] ... 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-27b9734b-91fb-47e8-b4f2-1b77872f95bd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_glance_image [0.071968s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_289_chassis_detail_get_member [0.065875s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ec70c632-2159-4696-9ab7-f88f1050c03a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_136_lessee_reader_cannot_put_power_state_change [0.068169s] ... 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-9ec46598-e8eb-4407-8273-4e84b1fb5b15 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_228_volume_targets_post_service_project_admin [0.068439s] ... 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-c92454eb-666c-4441-9c02-08b382daba4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image [0.063765s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_290_chassis_detail_get_observer [0.065353s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e99792c1-c440-41e8-8be2-393bbe9d42e4 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": "2026-04-12T07:47:40.517319+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.TestRBACProjectScoped.test_project_scoped_137_third_party_admin_cannot_put_power_state_change [0.067802s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/6c0cb13f-0907-4e3d-bf6f-aed5d59b4b6e/states/power WITH {'target': 'power on'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-71ad4c3e-1830-4511-8e2f-65049a174996 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 6c0cb13f-0907-4e3d-bf6f-aed5d59b4b6e could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_229_volume_targets_post_reader [0.066528s] ... 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-99e27a32-3eae-41fe-b3f4-14f15305eb75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate [0.053266s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_291_chassis_chassis_id_get_admin [0.065139s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e89628ed-3634-4eab-b213-579092650f7e 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": "2026-04-12T07:47:40.585075+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.TestRBACProjectScoped.test_project_scoped_138_owner_admin_can_put_boot_mode_state_change [0.068640s] ... 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-6c7f6093-2736-4240-877d-a2871ea8881a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_bios [0.045908s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_230_volume_volume_target_id_get_admin [0.065414s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/cb0f282f-3793-4fd0-a9ed-aa3b85cfa571 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f656a51-a51f-4147-a4c2-16d183333e44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "cb0f282f-3793-4fd0-a9ed-aa3b85cfa571", "created_at": "2026-04-12T07:47:40.611383+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/cb0f282f-3793-4fd0-a9ed-aa3b85cfa571", "rel": "self"}, {"href": "http://localhost/volume/targets/cb0f282f-3793-4fd0-a9ed-aa3b85cfa571", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection [0.035976s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_292_chassis_chassis_id_get_member [0.064750s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-213cb102-8d98-4ce4-baf7-a88a6a35b796 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_139_owner_manager_can_put_boot_mode_state_change [0.068616s] ... 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-f3c6b524-f193-4485-a8af-fc8c2dd4ed52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_inspection_missing [0.035658s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_231_volume_volume_target_id_get_member [0.068134s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/297448c3-3d2d-4eb8-8d4e-36018208d54e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fa22e4cb-6332-43eb-a6ec-b275c8c7e87a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "297448c3-3d2d-4eb8-8d4e-36018208d54e", "created_at": "2026-04-12T07:47:40.677572+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/297448c3-3d2d-4eb8-8d4e-36018208d54e", "rel": "self"}, {"href": "http://localhost/volume/targets/297448c3-3d2d-4eb8-8d4e-36018208d54e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_293_chassis_chassis_id_get_observer [0.064584s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8a52206d-9e7a-49a4-b312-efee6d25d131 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": "2026-04-12T07:47:40.717485+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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_glance [0.050004s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_140_lessee_admin_can_put_boot_mode_state_change [0.069796s] ... 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-17ad46ba-a5af-48ac-bf71-00a3ce5dced8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_232_volume_volume_target_id_get_reader [0.069050s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/0465323c-8d17-4af1-b341-b32a5901da1a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-053e3958-5b71-4575-93a4-f0cc566bcfc0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0465323c-8d17-4af1-b341-b32a5901da1a", "created_at": "2026-04-12T07:47:40.746343+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/0465323c-8d17-4af1-b341-b32a5901da1a", "rel": "self"}, {"href": "http://localhost/volume/targets/0465323c-8d17-4af1-b341-b32a5901da1a", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver [0.050162s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_294_chassis_chassis_id_patch_admin [0.074182s] ... 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-9fe8e834-ea7b-45e5-841a-564250ee6043 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": "2026-04-12T07:47:40.784527+00:00", "updated_at": "2026-04-12T07:47:40.815229+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"}]]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_141_lessee_manager_can_put_boot_mode_state_change [0.067404s] ... 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-fefa1fad-fa3c-4897-83dd-5b503ccfa4d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_233_volume_volume_target_id_get_service [0.066115s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/c494d70c-1577-4263-bfcd-8e5c46b385d0 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d0a7acb5-7c46-45a2-871b-faeb56e428b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c494d70c-1577-4263-bfcd-8e5c46b385d0", "created_at": "2026-04-12T07:47:40.814702+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/c494d70c-1577-4263-bfcd-8e5c46b385d0", "rel": "self"}, {"href": "http://localhost/volume/targets/c494d70c-1577-4263-bfcd-8e5c46b385d0", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_ramdisk_deploy_webserver_exc [0.052721s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_295_chassis_chassis_id_patch_member [0.066413s] ... 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-a7bdc836-d268-4f03-8b2a-af9da8d5bedc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_142_owner_member_can_put_boot_mode_state_change [0.068434s] ... 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-e989e093-d348-4ad6-ab0c-7828f4ec466d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue [0.048154s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_234_volume_volume_target_id_patch_admin [0.077867s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/05c7454b-ba49-47a8-8c69-4ec4162a5294 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5a71b6b0-6fa7-4aef-8fdc-dcd464910723 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.066184s] ... 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-ccfcbbbe-33cd-40e2-8944-3c7563165222 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_143_lessee_member_can_put_boot_mode_state_change [0.068798s] ... 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-97200027-3558-45e8-83e7-52cc09add789 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_235_volume_volume_target_id_patch_reader [0.072789s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/f8f17f60-9b74-4141-9bf2-8812b670ce11 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fe2046f3-03fe-432d-bf8c-64c8cb0c0faf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_297_chassis_chassis_id_delete_admin [0.076659s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 204 No Content Openstack-Request-Id: req-ca3729ea-fef2-4241-bfd8-8b35bb81c9ed 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.TestRBACProjectScoped.test_project_scoped_144_owner_reader_cannot_put_boot_mode_state_change [0.069648s] ... 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-fffbb7ca-c25a-4c83-aa75-c57167285624 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_236_volume_volume_target_id_patch_service [0.080533s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/699309c4-5c19-467f-a463-957c7666b5c9 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e4da8e32-f5d4-4167-8d39-e1e2ee7dbfee X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_298_chassis_chassis_id_delete_member [0.065699s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e828e33d-763a-482f-ad8b-5014f0cc5c38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_145_lessee_reader_cannot_put_boot_mode_state_change [0.065505s] ... 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-791c7fa6-616a-4acb-8305-32ba603212d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_237_volume_volume_target_id_delete_admin [0.069711s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/7af9be58-f3b1-438d-8261-e5cd8665c68f GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3d6dac5b-4151-4908-ab05-4f579a0b56ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_299_chassis_chassis_id_delete_observer [0.065432s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5fc5224b-85be-4559-8822-d26f80192295 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.ilo.test_boot.IloUefiHttpsBootTestCase.test_validate_rescue_no_rescue_ramdisk [0.264918s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_146_third_party_admin_cannot_put_boot_mode_state_change [0.066840s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/524b0b43-5d5e-48ef-a966-36e2f2a22823/states/boot_mode WITH {'target': 'uefi'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-038bfcb0-0565-43cb-976e-e94487547940 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 524b0b43-5d5e-48ef-a966-36e2f2a22823 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_get_properties [0.040854s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_238_volume_volume_target_id_delete_member [0.072131s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/4726ddde-3ffa-4863-848d-f3deacdb7c5b GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-49532f06-34c4-4eb4-86cf-d9365ed3d674 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_300_node_history_get_admin [0.072896s] ... 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-a2f6248c-44a0-492b-8c3a-d394bfc59e9b 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": "087cce24-1282-4f5c-aad2-38f3d98c4fb8", "created_at": "2026-04-12T07:47:41.214444+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/087cce24-1282-4f5c-aad2-38f3d98c4fb8", "rel": "self"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_147_owner_admin_can_put_secure_boot_state_change [0.069598s] ... 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-d90c906e-07aa-482d-a0e8-24130e91704f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_exist_ok [0.056779s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_239_volume_volume_target_id_delete_reader [0.064772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/1485a244-3d8b-4b13-8600-948029042c68 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4f3ab802-c3b3-4359-803c-323900fc6cf7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_301_node_history_get_member [0.071125s] ... 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-a4b425dc-5801-4086-aaf6-a67b0cb52a70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_148_owner_manager_can_put_secure_boot_state_change [0.070775s] ... 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-0048d3eb-272a-4867-a761-ee244b01abbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_capabilities_ok [0.053783s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_240_volume_volume_target_id_delete_service [0.070403s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/ec35f704-9991-44e1-9c71-f72c5407b8e5 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-94bc3abf-c0d4-43b6-a025-e46ada8c2c47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok [0.050935s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_302_node_history_get_observer [0.072254s] ... 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-3a215c98-5cbe-43d9-a3b2-a8be2c992dde 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": "bd5b47c7-9ddb-44f8-b014-b5ff8d1e0050", "created_at": "2026-04-12T07:47:41.363892+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/bd5b47c7-9ddb-44f8-b014-b5ff8d1e0050", "rel": "self"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_149_lessee_admin_can_put_secure_boot_state_change [0.069268s] ... 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-3e527761-9ab4-4f39-8cd7-088ec88886ae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_241_nodes_volume_get_admin [0.060087s] ... 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-cccadb9e-049b-42cf-b952-55a81d0185d4 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.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_local_gb_zero [0.059352s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_303_node_history_get_entry_admin [0.070564s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/bd9a9679-fee5-4e35-9bfe-ea3a37503b60 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a0884f1c-1639-4350-baf7-2f651416ac28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "bd9a9679-fee5-4e35-9bfe-ea3a37503b60", "created_at": "2026-04-12T07:47:41.435924+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/bd9a9679-fee5-4e35-9bfe-ea3a37503b60", "rel": "self"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_150_lessee_manager_can_put_secure_boot_state_change [0.068659s] ... 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-932223f1-c3ac-4fa6-912b-210c46202679 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_242_nodes_volume_get_member [0.062133s] ... 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-101d62eb-1b85-4272-b04d-b42ebd2eb885 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.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_essential_ok_power_off [0.055413s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_304_node_history_get_entry_member [0.068527s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/29e2b695-689b-4c20-933f-5db745b64872 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6b3ed6b7-f1be-4eca-a0e8-2ce2fea70fbe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_151_owner_member_can_put_secure_boot_state_change [0.068137s] ... 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-bcd72b01-e8ce-4bcc-9e32-480608c2454c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_243_nodes_volume_get_reader [0.060888s] ... 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-859eb5d7-eec7-4bad-9fff-7f1d91e5995d 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.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen10 [0.054897s] ... ok {0} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_inspect_ok_gen8 [0.050410s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACModelBeforeScopes.test_rbac_legacy_305_node_history_get_entry_observer [0.072576s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/13169a90-9737-49ae-8f66-f285b5764a3f WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-04f1ac30-dc86-47bf-bb09-8cea8a45cb85 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "13169a90-9737-49ae-8f66-f285b5764a3f", "created_at": "2026-04-12T07:47:41.578236+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/13169a90-9737-49ae-8f66-f285b5764a3f", "rel": "self"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_152_lessee_member_can_put_secure_boot_state_change [0.070948s] ... 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-c1eb572a-f003-46f1-b9dd-345ce8cb548e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_244_nodes_volume_connectors_get_admin [0.072447s] ... 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-189ea19d-2049-4354-9709-691ebf2970bd 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": "0f9a7b7f-16aa-4fdd-8152-b7cb85c87c94", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/0f9a7b7f-16aa-4fdd-8152-b7cb85c87c94", "rel": "self"}, {"href": "http://localhost/volume/connectors/0f9a7b7f-16aa-4fdd-8152-b7cb85c87c94", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.ilo.test_inspect.IloInspectTestCase.test_validate [0.043973s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_001_values ... SKIPPED: These are fake reference values for YAML templating {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_153_owner_reader_cannot_put_secure_boot_state_change [0.066443s] ... 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-56437cd2-7f5d-4db8-8d85-0bc0dac4d778 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_245_nodes_volume_connectors_get_member [0.069362s] ... 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-a3837c89-4c4b-47c7-a481-f6c394cb771a 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": "18d86f93-b74b-4d15-b7b1-5bed48ab8431", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/18d86f93-b74b-4d15-b7b1-5bed48ab8431", "rel": "self"}, {"href": "http://localhost/volume/connectors/18d86f93-b74b-4d15-b7b1-5bed48ab8431", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_memory.MemoryTestCase.test_memory [0.052740s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_all_valid_data [0.041983s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_154_lessee_reader_cannot_put_secure_boot_state_change [0.067986s] ... 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-ff23b5ec-a3a7-4744-b3bf-b10073b55857 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_002_nodes_post_admin [0.089005s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-01896448-f4d1-4066-8fe7-bd106bb124d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_bad_value_linkagg [0.042320s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_155_third_party_admin_cannot_put_secure_boot_state_change [0.067443s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/24eacc85-f465-455e-80fc-5097633e3ff1/states/secure_boot WITH {'target': 'true'} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-003e8261-8285-46cb-98a8-dff3b9692ae3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 24eacc85-f465-455e-80fc-5097633e3ff1 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_bad_value_macphy [0.042366s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_003_nodes_post_member [0.087784s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0732e2ed-2bc9-4c00-a30c-dddd7a931932 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_chassis_ids [0.043277s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_156_owner_admin_can_change_provision_state [0.072998s] ... 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-d3809a0b-f497-48a1-85b7-19884845d0b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_duplicate_tlvs [0.040006s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_004_nodes_post_observer [0.086799s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fb86574b-d39e-4723-bd7c-897473fbf149 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_246_nodes_volume_connectors_get_reader [0.261031s] ... 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-ef302d51-23af-479e-a3b0-84c8267f1833 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": "c806eca4-0be4-4f88-af76-6ae3ce235cf2", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/c806eca4-0be4-4f88-af76-6ae3ce235cf2", "rel": "self"}, {"href": "http://localhost/volume/connectors/c806eca4-0be4-4f88-af76-6ae3ce235cf2", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_invalid_ip [0.042298s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_157_owner_manager_can_change_provision_state [0.070889s] ... 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-47dafbc1-bb93-4fc7-8a2c-aa875823176f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_multiple_interfaces [0.040037s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_005_nodes_get_node_admin [0.065148s] ... 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-8c8b106c-68b8-4460-97f9-97052c7304a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_247_nodes_volume_targets_get_admin [0.070210s] ... 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-d6615ca9-73da-4685-96f3-00b76d7be891 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": "1353bd5d-6e48-4ed0-83a8-2bfe67af639e", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/1353bd5d-6e48-4ed0-83a8-2bfe67af639e", "rel": "self"}, {"href": "http://localhost/volume/targets/1353bd5d-6e48-4ed0-83a8-2bfe67af639e", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_158_owner_member_can_change_provision_state [0.067776s] ... 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-492efe95-bfb8-4b77-9bbe-bfd782ccfd88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_null_strings [0.042751s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_006_nodes_get_node_member [0.063796s] ... 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-fe70b434-f6b3-4534-aebf-0e42684543c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_old_format [0.042951s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_248_nodes_volume_targets_get_member [0.069496s] ... 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-3db236c0-a539-4f21-afb2-a978920700b3 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": "3d33b44c-e90d-47cb-8a62-37e020d13350", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/3d33b44c-e90d-47cb-8a62-37e020d13350", "rel": "self"}, {"href": "http://localhost/volume/targets/3d33b44c-e90d-47cb-8a62-37e020d13350", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_truncated_int [0.042251s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_007_nodes_get_node_observer [0.063927s] ... 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-203d91ea-4cac-4ff8-aac5-048b800e095e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_249_nodes_volume_targets_get_reader [0.071437s] ... 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-466c6b26-0662-4744-8f53-a1744e9a737f 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": "5da78377-b908-4ca1-af55-5b8c8148db8d", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/5da78377-b908-4ca1-af55-5b8c8148db8d", "rel": "self"}, {"href": "http://localhost/volume/targets/5da78377-b908-4ca1-af55-5b8c8148db8d", "rel": "bookmark"}], "node_uuid": "1be26c0b-03f2-4d2e-ae87-c02d7f33c123"}]} {0} ironic.tests.unit.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_truncated_mac [0.044634s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_008_nodes_get_node_other_admin [0.069913s] ... 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-cb04c5a8-9070-4460-9874-419d67fc42f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_unhandled_oui [0.045628s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_250_drivers_get_admin [0.067244s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4f34b585-9902-4ab8-8297-ad0d39a627a5 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.drivers.modules.inspector.hooks.test_parse_lldp.ParseLLDPTestCase.test_unhandled_tlvs [0.044172s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_009_nodes_get_admin [0.068114s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1644f207-2df0-48fb-afb2-c9910360f5b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScopedRequests.test_system_scoped_251_drivers_get_member [0.061172s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9ce07068-eae6-4472-8dce-5822384887aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"drivers": []} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_159_lessee_admin_can_change_provision_state [0.283253s] ... 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-b48492e9-5f95-4bf4-8011-63da9eef6f25 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.inspector.hooks.test_ports.AddPortsTestCase.test_add_ports [0.059068s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_010_nodes_get_other_admin [0.068427s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-bd77f087-b164-4acb-9873-a3a9af0c16ad 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.test_acl.TestRBACScopedRequests.test_system_scoped_252_drivers_get_reader [0.057854s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-aa363d3c-5c6a-41e7-9d65-9fc9aa02d193 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.drivers.modules.inspector.hooks.test_ports.AddPortsTestCase.test_duplicates [0.058367s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_160_lessee_manager_can_change_provision_state [0.068929s] ... 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-b9f56337-20db-4a8e-b505-cc25d6bb7c11 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_011_nodes_detail_get_admin [0.062344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0819fd18-517c-4ba9-a332-bbebc56f43aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScopedRequests.test_system_scoped_253_drivers_driver_name_get_admin [0.060773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9e4fc519-0cdb-460c-9007-a7bc87974205 X-Openstack-Ironic-Api-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.drivers.modules.inspector.test_agent.ContinueInspectionTestCase.test [0.044037s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_161_lessee_member_cannot_change_provision_state [0.072176s] ... 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-d69da33e-950c-47f4-9517-383847af1142 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_boot_clean_up_failed [0.044382s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_012_nodes_detail_get_member [0.064645s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-11b7c569-80cd-4f6f-8cd2-fcad5d5f748d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScopedRequests.test_system_scoped_254_drivers_driver_name_get_member [0.059186s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5620d7b0-2221-417e-840a-82bb04e76409 X-Openstack-Ironic-Api-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.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_managed [0.044624s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_255_drivers_driver_name_get_reader [0.059579s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-af515335-15d8-486d-9a0b-382138bcf54b X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_013_nodes_detail_get_observer [0.063143s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8c28be92-ff10-496a-9622-9f2b9910f744 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_162_third_party_admin_cannot_change_provision_state [0.080236s] ... 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-24a61602-b623-4101-8ed1-64dc70e739a4 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_managed_no_power_off [0.037811s] ... ok {0} ironic.tests.unit.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_managed_no_power_off_on_fast_track [0.032302s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_256_drivers_properties_get_admin [0.061543s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-98ae8bf6-d774-4a09-b28d-adf1e0b61f37 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_014_nodes_node_ident_get_admin [0.069714s] ... 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-42c36c71-03a6-4f01-95c7-e608531b488b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_163_service_can_change_provision_state_for_own_nodes [0.080577s] ... 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-19695f61-6871-4a17-b7b8-8705395d655c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_network_clean_up_failed [0.047235s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_257_drivers_properties_get_member [0.059817s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b7bd451a-b9c4-4cf0-9ec1-710489aeec25 X-Openstack-Ironic-Api-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.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_unmanaged [0.027836s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_015_nodes_node_ident_get_member [0.066570s] ... 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-a4359336-f92d-4b9a-8ef7-d09d1e93f924 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.inspector.test_interface.TearDownManagedInspectionTestCase.test_unmanaged_force_power_off [0.037425s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_164_service_cannot_change_provision_state [0.074120s] ... 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-fd18e81b-addc-41c1-bfef-087a9dedc4b8 X-Openstack-Ironic-Api-Maximum-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.test_acl.TestRBACScopedRequests.test_system_scoped_258_drivers_properties_get_reader [0.059996s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-352bd2b4-5a5d-4195-9709-a50216eac72b X-Openstack-Ironic-Api-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.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_default_interfaces [0.044411s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_016_nodes_node_ident_get_observer [0.068221s] ... 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-0b729950-8423-4a02-8d7a-58f44e5aaa58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_165_owner_member_can_set_provision_state_clean [0.074139s] ... 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-ff4ab191-4592-4dfb-8f98-b8cf047e21d3 X-Openstack-Ironic-Api-Maximum-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.test_acl.TestRBACScopedRequests.test_system_scoped_259_drivers_raid_logical_disk_properties_get_admin [0.062518s] ... 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-b1f884c1-a46a-402e-8bc6-be2149af5e06 X-Openstack-Ironic-Api-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.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_agent_rescue [0.045250s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_017_nodes_node_ident_patch_admin [0.072096s] ... 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-280bfe7d-8d7a-4ba8-847f-2cc15ba2a79d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_cinder_storage [0.043221s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_260_drivers_raid_logical_disk_properties_get_member [0.067219s] ... 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-52e18a4c-07f1-4ac5-a179-002cd310f47b X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_166_owner_reader_cannot_set_provision_state_clean [0.077809s] ... 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-4f6976b2-60b8-4896-beea-ebb6814372f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.intel_ipmi.test_intel_ipmi.IntelIPMIHardwareTestCase.test_override_with_shellinabox [0.044620s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_261_drivers_raid_logical_disk_properties_get_reader [0.061026s] ... 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-10ff7bd8-3e98-4927-ad4e-1550fdae8922 X-Openstack-Ironic-Api-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.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect [0.051994s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_167_lessee_admin_can_set_provision_state_clean [0.078099s] ... 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-e0542e74-1f0e-4b9b-9c72-94a696574537 X-Openstack-Ironic-Api-Maximum-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.test_acl.TestRBACScopedRequests.test_system_scoped_262_drivers_vendor_passthru_methods_get_admin [0.063072s] ... 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-a0416422-5d2d-47d5-8c2f-9e4baaf0e86c X-Openstack-Ironic-Api-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.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_empty [0.057967s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_168_lessee_member_cannot_set_provision_state_clean [0.081040s] ... 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-0dd9e960-7ad6-46b4-bdcf-b2b5a5deffa5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_error [0.040776s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_263_drivers_vendor_passthru_methods_get_member [0.060233s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ac64b3c7-bc12-4ce1-86d6-965aa1cc01c2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_invalid_input [0.057363s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_169_owner_member_can_set_provision_state_service [0.070667s] ... 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-33e80e6e-3225-4383-8e81-a8352f6d19e0 X-Openstack-Ironic-Api-Maximum-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.test_acl.TestRBACScopedRequests.test_system_scoped_264_drivers_vendor_passthru_methods_get_reader [0.058639s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/vendor_passthru/methods WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d32b0c43-f6ae-4002-bf29-933dddac5c1f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_018_nodes_node_ident_patch_member [0.280779s] ... 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-83f84716-da5b-4f16-a8c9-8c05db85ab4f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.intel_ipmi.test_management.IntelIPMIManagementTestCase.test_configure_intel_speedselect_more_socket [0.043746s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_false [0.019433s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_265_drivers_vendor_passthru_get_admin [0.062872s] ... 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-42bbe628-e167-459d-b6ad-9d63d2d0e629 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_170_owner_reader_cannot_set_provision_state_service [0.071761s] ... 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-84b7e7b4-0707-4916-8d4e-23c3649010d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.irmc.test_boot.IsImageHrefOrdinaryFileNameTestCase.test_is_image_href_ordinary_file_name_true [0.022662s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_019_nodes_node_ident_patch_observer [0.072540s] ... 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-44a087f1-c5ff-415a-ac03-8f3b16f00975 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_check_elcm_license_fail_elcm_error [0.027298s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_266_drivers_vendor_passthru_get_member [0.059907s] ... 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-da77d847-c666-4e54-b59d-0a22746de2b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_check_elcm_license_fail_invalid_json [0.026710s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_171_lessee_admin_can_set_provision_state_service [0.069880s] ... 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-82bf7743-50aa-4937-a5c0-85760fe4bdfd X-Openstack-Ironic-Api-Maximum-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.TestRBACScoped.test_rbac_legacy_020_nodes_node_ident_delete_admin [0.069955s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b30fbaa3-609b-4d57-9f78-a0875f0f81fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_check_elcm_license_success_with_200 [0.027295s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_267_drivers_vendor_passthru_get_reader [0.058220s] ... 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-a35bdeb2-9d70-4aad-b50e-613b9354d84e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_172_lessee_member_cannot_set_provision_state_service [0.070552s] ... 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-e1a9773e-ead2-4d5e-9362-703b6f8b209f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_021_nodes_node_ident_delete_member [0.066321s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6de34563-4835-4aca-81fd-e811475b6821 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_268_drivers_vendor_passthru_post_admin [0.062035s] ... 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-02c55596-4f9d-4437-951b-5f3813f2f4dd X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_022_nodes_node_ident_delete_observer [0.064170s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7878eb9c-8601-4e3d-8809-8eda7ff59e73 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_173_owner_admin_can_set_raid_config [0.070416s] ... 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-546539b0-3c38-41ac-a324-2224ca915c29 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_269_drivers_vendor_passthru_post_member [0.058384s] ... 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-1297fe43-be98-41c6-b791-c53c8e44aa44 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_174_owner_manager_can_set_raid_config [0.068856s] ... 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-1d6e874b-3930-4fe0-98c0-3999a021f4be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_023_nodes_validate_get_admin [0.068801s] ... 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-f5cbba4b-b1c8-4d79-b6e4-f4a831c74574 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_270_drivers_vendor_passthru_post_reader [0.058313s] ... 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-92e74046-e384-425d-80e9-e1a72a60a137 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_check_elcm_license_success_with_500 [0.230534s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_client [0.025444s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_024_nodes_validate_get_member [0.065561s] ... 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-3ebb361d-5206-437e-bf66-c00a21b7f917 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_271_drivers_vendor_passthru_put_admin [0.061416s] ... 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-1f2c8c1f-4248-4537-8d67-3fbeca36011d X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_175_lessee_admin_cannot_set_raid_config [0.070313s] ... 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-ed433e93-5a19-49f8-95f8-d7627841d0d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_get_irmc_report [0.031934s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_auth_method [0.024835s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_272_drivers_vendor_passthru_put_member [0.062068s] ... 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-0a68224c-b946-4550-a1e9-14715bc4815f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_025_nodes_validate_get_observer [0.070436s] ... 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-eef8a5e6-44ef-4799-8bfe-20ceb22f402f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_176_lessee_manager_cannot_set_raid_config [0.074079s] ... 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-a6052a7f-9bc8-48c7-9748-9be844c55ed7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_port [0.031562s] ... ok {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_out_range_sensor_method [0.024818s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_273_drivers_vendor_passthru_put_reader [0.065950s] ... 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-0182298e-109c-46ba-bd71-d9f44074adcb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_026_nodes_maintenance_put_admin [0.075415s] ... 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-48bcf712-2196-451c-a7a5-478aa0b661fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_177_owner_member_can_set_raid_config [0.075333s] ... 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-368c8ea1-72fd-46e9-a9d9-349ec8e9602a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_irmc_version_fail [0.047305s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_274_drivers_vendor_passthru_delete_admin [0.066075s] ... 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-f526a4a5-9182-424f-9f31-92e767de6299 X-Openstack-Ironic-Api-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_irmc_version_success [0.050681s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_027_nodes_maintenance_put_member [0.072895s] ... 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-a065fde4-3f37-400e-979f-8c5b107952e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_178_lessee_member_cannot_set_raid_config [0.076888s] ... 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-fa8612b1-d28c-424a-934b-bb5a90e94325 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_disable [0.030902s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_275_drivers_vendor_passthru_delete_reader [0.062898s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/drivers/fake-driverz/vendor_passthru?method=test GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ea57e62e-3b72-47e0-bed1-b8dbc881182f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_enable [0.027537s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_028_nodes_maintenance_put_observer [0.068164s] ... 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-a7065166-7b1e-40bc-8150-43ca494679be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_179_third_party_admin_cannot_set_raid_config [0.072759s] ... 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-c5634de6-d7f7-4f0a-a14c-de5ef4820bb0 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_set_secure_boot_mode_fail [0.042798s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_276_nodes_bios_get_admin [0.070843s] ... 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-4591ff1d-c213-4b98-89d6-18c8763668ae 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": "2026-04-12T07:47:43.813045+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"}]}]} {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_update_ipmi_properties [0.046659s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_029_nodes_maintenance_delete_admin [0.072375s] ... 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-b59709b8-ce56-4cdc-9267-3a692b78e682 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_180_service_cannot_set_raid_config [0.077317s] ... 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-4e5dd8bf-0321-44ce-bc1e-39117d346cec X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_within_version_ranges_fail_no_match [0.029181s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_277_nodes_bios_get_member [0.072825s] ... 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-8fa11368-eccb-4c77-b916-8a792f0d05f2 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": "2026-04-12T07:47:43.887827+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"}]}]} {0} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_within_version_ranges_fail_no_version_set [0.025541s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_030_nodes_maintenance_delete_member [0.065953s] ... 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-f18a2ead-0e2e-4dab-bc0d-b995be96dd23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_within_version_ranges_success [0.025781s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_181_owner_admin_can_get_console [0.073888s] ... 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-d0d3ea50-4567-4bf5-9940-36e06f41d45e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.irmc.test_common.IRMCCommonMethodsTestCase.test_within_version_ranges_success_out_range [0.026087s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_278_nodes_bios_get_reader [0.067453s] ... 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-0f312a1b-08dd-4001-89b7-2e352e8936e4 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": "2026-04-12T07:47:43.956447+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.TestRBACScoped.test_rbac_legacy_031_nodes_maintenance_delete_observer [0.065500s] ... 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-42807072-a904-4308-ab26-79182f790191 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_1_and_0 [0.037813s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_182_owner_manager_can_get_console [0.072042s] ... 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-2e0b1303-7ecf-4238-bbc1-db19f3a7fc7e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_create_raid_with_raid_5_and_0 [0.036692s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_279_nodes_bios_bios_setting_get_admin [0.069562s] ... 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-2b939a20-bc38-4915-9297-31194407313b 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": "2026-04-12T07:47:44.026185+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.TestRBACScoped.test_rbac_legacy_032_nodes_management_boot_device_put_admin [0.067104s] ... 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-82445634-7b9d-4a2a-9d4c-985a74a6ea35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration [0.043378s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_183_owner_service_can_get_console [0.072061s] ... 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-0177b992-9f95-4c02-b98a-1bc4083c5e97 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_280_nodes_bios_bios_setting_get_member [0.066335s] ... 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-f2a024dc-f21f-4722-b3d0-3544afbbc462 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": "2026-04-12T07:47:44.093909+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.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_delete_raid_configuration_return_cleared_raid_config [0.042562s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_033_nodes_management_boot_device_put_member [0.067667s] ... 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-bcf42837-aedf-4f77-8b81-792b16eb18f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.irmc.test_raid.IRMCRaidConfigurationTestCase.test_fail_create_raid_without_target_raid_config [0.035097s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_281_nodes_bios_bios_setting_get_reader [0.065031s] ... 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-30e9391d-4857-4b0a-a406-70252388c255 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": "2026-04-12T07:47:44.160613+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"}]}} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_184_lessee_admin_cannot_get_console [0.080250s] ... 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-098b2556-d784-4848-8028-41808f9a6d72 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_034_nodes_management_boot_device_put_observer [0.068681s] ... 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-8aafbe20-5c6c-41f0-bb62-e8edbb8b0cd2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address [0.046980s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_282_conductors_get_admin [0.062572s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e85b5b30-0ec0-443b-8770-8d9110a6e23a 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}]} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_VIF_MAC_update_fail [0.045004s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_185_lessee_manager_cannot_get_console [0.074244s] ... 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-d7af43e6-3ba3-4609-b72f-7b26c3d469f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_035_nodes_management_boot_device_get_admin [0.069757s] ... 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-b1b42ee1-10ba-4d3a-8431-6c57ad8ec1eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_283_conductors_get_member [0.059932s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cb93bf29-6b47-442e-b99f-635243fb1b95 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}]} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_address_no_vif_id [0.049857s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id ... SKIPPED: https://bugs.launchpad.net/ironic/+bug/2024994 {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_client_id_fail ... SKIPPED: https://bugs.launchpad.net/ironic/+bug/2024994 {0} 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 {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_extra_add_new_key ... SKIPPED: https://bugs.launchpad.net/ironic/+bug/2024994 {0} 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.api.test_acl.TestRBACProjectScoped.test_project_scoped_186_owner_member_can_get_console [0.075752s] ... 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-ecb62283-de65-4c90-beb7-03649e4f3f14 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_036_nodes_management_boot_device_get_member [0.069415s] ... 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-87396514-0149-490d-8ccc-f27c0eabd449 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_284_conductors_get_reader [0.058442s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-49690540-71e2-40e3-b972-1d09443b84c5 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}]} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_noportgroup [0.089629s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_187_lessee_member_cannot_get_console [0.070751s] ... 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-fe733ad6-63c1-4cda-b709-df02fc0d5ca7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_037_nodes_management_boot_device_get_observer [0.069299s] ... 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-01665a75-966b-4422-bb7d-5c3ec7e4e350 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_285_conductors_hostname_get_admin [0.060689s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-36c2a2f2-7e4b-4464-b1c4-9dfeff785b3d 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": "2026-04-12T07:47:44.403510+00:00", "updated_at": "2026-04-12T07:47:44.404131+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.test_acl.TestRBACScopedRequests.test_system_scoped_286_conductors_hostname_get_member [0.058842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9817331b-1499-4e8e-84c7-e2adc4f939f2 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": "2026-04-12T07:47:44.464963+00:00", "updated_at": "2026-04-12T07:47:44.465583+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.TestRBACProjectScoped.test_project_scoped_188_owner_reader_cannot_get_console [0.069992s] ... 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-1e7b425f-4190-4c75-a877-6bec62fb811b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_038_nodes_management_boot_device_supported_get_admin [0.067088s] ... 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-52375670-50b2-44b0-ae95-f983dcc1f3cf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_nostandalone_ports [0.103216s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_189_lessee_reader_cannot_get_console [0.066498s] ... 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-3222ed66-6742-48dd-8258-7004ba8d710f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_039_nodes_management_boot_device_supported_get_member [0.066443s] ... 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-03e06197-d2d2-4f97-b527-79331572685a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_nopxe_portgroup_standalone_ports [0.096998s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_040_nodes_management_boot_device_supported_get_observer [0.066639s] ... 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-71612709-66e2-402b-bc32-69dda318bc26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_190_third_party_admin_cannot_get_console [0.070066s] ... 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-f273cce3-2f8f-421e-938f-fd8ba5ebfa61 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_noportgroup [0.087157s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_041_nodes_management_inject_nmi_put_admin [0.067305s] ... 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-c35107b9-b4cd-4069-a5ab-4a4ec46d98aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_191_owner_admin_can_set_console [0.069074s] ... 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-848d6c17-50d2-41f1-90c0-1188e420fa30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_287_conductors_hostname_get_reader [0.248069s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9eeddcf6-32bf-48fd-932d-901eecb83489 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": "2026-04-12T07:47:44.712209+00:00", "updated_at": "2026-04-12T07:47:44.712887+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.TestRBACProjectScoped.test_project_scoped_192_owner_manager_can_set_console [0.067258s] ... 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-a26dddde-68e1-415a-a1c5-eb8f3e905d14 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_042_nodes_management_inject_nmi_put_member [0.069403s] ... 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-272fe538-904b-4ba2-8af6-dc6014908595 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_288_allocations_post_admin [0.064784s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-bd2c91eb-2111-4e6c-9ce8-8f187141bc75 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_nostandalone_ports [0.104516s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_043_nodes_management_inject_nmi_put_observer [0.069169s] ... 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-bd70b0e0-ab3d-4b4d-a40d-4a5152c528b2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_289_allocations_post_member [0.076013s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-72976485-7a84-4b15-9df2-815e9a0f23fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_novif_pxe_portgroup_standalone_ports [0.096682s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_044_nodes_states_get_admin [0.067602s] ... 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-bb32943c-5182-4944-9db3-6204c9cd5251 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_290_allocations_post_reader [0.069230s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6a6c916f-2a6d-4fa4-a555-c259a2d61184 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_rbac_legacy_045_nodes_states_get_member [0.067545s] ... 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-47f72fc6-b2e1-471b-a15f-0aa60595a9ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_noportgroup [0.088284s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_291_allocations_get_admin [0.074593s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d5c76191-c4a4-4795-927f-fe8585aa675e 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": "a259f4b5-c2dc-40cc-ac33-c0e0cccbcba7", "created_at": "2026-04-12T07:47:44.977703+00:00", "updated_at": "2026-04-12T07:47:44.982462+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/a259f4b5-c2dc-40cc-ac33-c0e0cccbcba7", "rel": "self"}, {"href": "http://localhost/allocations/a259f4b5-c2dc-40cc-ac33-c0e0cccbcba7", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_193_lessee_admin_cannot_set_console [0.266255s] ... 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-c0803b38-4409-4120-b794-a5d150f0ddc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_046_nodes_states_get_observer [0.067451s] ... 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-d94a06d2-6c02-4354-aa79-5a671880f85d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_nostandalone_ports [0.100054s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_292_allocations_get_member [0.066265s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b6d9bc13-770f-43cb-8d03-02b2149fa5ff 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": "7b7c85a0-6214-4be8-84c7-4ab3c7b7214d", "created_at": "2026-04-12T07:47:45.050662+00:00", "updated_at": "2026-04-12T07:47:45.055096+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/7b7c85a0-6214-4be8-84c7-4ab3c7b7214d", "rel": "self"}, {"href": "http://localhost/allocations/7b7c85a0-6214-4be8-84c7-4ab3c7b7214d", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_194_lessee_manager_cannot_set_console [0.069712s] ... 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-ccf07972-1349-4b72-afeb-4f0a4550f2b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_047_nodes_states_power_put_admin [0.066857s] ... 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-bf1a706d-ec5c-4c3c-b851-38c87e8d962d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_293_allocations_get_reader [0.082793s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4191b5fa-fbff-483d-84dc-70abb358894b 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": "5fd013e3-24b4-4d07-a09c-49e6a7c73907", "created_at": "2026-04-12T07:47:45.125744+00:00", "updated_at": "2026-04-12T07:47:45.130689+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/5fd013e3-24b4-4d07-a09c-49e6a7c73907", "rel": "self"}, {"href": "http://localhost/allocations/5fd013e3-24b4-4d07-a09c-49e6a7c73907", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_195_owner_member_can_set_console [0.068327s] ... 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-4da69ade-d304-4934-bf91-f824142bd91e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_048_nodes_states_power_put_member [0.067359s] ... 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-0d0b0014-f757-4cf3-bf22-acf6bc77d775 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_nopxe_portgroup_standalone_ports [0.105901s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_294_allocations_allocation_id_get_admin [0.068055s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/d22647cb-9721-490f-bf64-933ac0a3323b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-620a662a-3ed9-4877-b7c7-c597d5535277 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d22647cb-9721-490f-bf64-933ac0a3323b", "created_at": "2026-04-12T07:47:45.202914+00:00", "updated_at": "2026-04-12T07:47:45.206993+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/d22647cb-9721-490f-bf64-933ac0a3323b", "rel": "self"}, {"href": "http://localhost/allocations/d22647cb-9721-490f-bf64-933ac0a3323b", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_196_lessee_member_cannot_set_console [0.067584s] ... 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-8e7ad829-820d-4a51-a5e7-ee9b3a98c139 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_049_nodes_states_power_put_observer [0.064743s] ... 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-dcf3f266-ccaf-43e7-991e-9caf4458eb33 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_noportgroup [0.088660s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_295_allocations_allocation_id_get_member [0.065631s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/a18ce811-2355-4e0c-998f-b482309c34d5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d31749f8-0d84-4f1e-8840-dfc80401d525 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a18ce811-2355-4e0c-998f-b482309c34d5", "created_at": "2026-04-12T07:47:45.268969+00:00", "updated_at": "2026-04-12T07:47:45.273588+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/a18ce811-2355-4e0c-998f-b482309c34d5", "rel": "self"}, {"href": "http://localhost/allocations/a18ce811-2355-4e0c-998f-b482309c34d5", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_197_owner_service_can_set_console [0.070152s] ... 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-c1b61eb1-33bb-4c71-879e-1dcac0387807 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_050_nodes_states_boot_mode_put_admin [0.066550s] ... 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-ee7d35b2-235e-4be1-b925-fc2922742eff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_296_allocations_allocation_id_get_reader [0.066566s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/4fd44483-6fdb-4579-8930-0dd8c721948b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5b7166ed-5659-4afa-ab98-aa2ac8db5a8d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4fd44483-6fdb-4579-8930-0dd8c721948b", "created_at": "2026-04-12T07:47:45.336244+00:00", "updated_at": "2026-04-12T07:47:45.340484+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/4fd44483-6fdb-4579-8930-0dd8c721948b", "rel": "self"}, {"href": "http://localhost/allocations/4fd44483-6fdb-4579-8930-0dd8c721948b", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_nostandalone_ports [0.100954s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_051_nodes_states_boot_mode_put_member [0.066287s] ... 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-04ee4fc7-b3c1-4ce8-a2bf-4d91bebf46e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_198_service_cannot_set_console [0.072007s] ... 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-39be757b-4c05-467a-b128-55bdf8045b0e X-Openstack-Ironic-Api-Maximum-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.TestRBACScoped.test_rbac_legacy_052_nodes_states_boot_mode_put_observer [0.065048s] ... 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-1bab330a-5207-4ad7-b3b2-17d799cacdc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_297_allocations_allocation_id_patch_admin [0.082410s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/b806360a-b7ae-41e3-8d7f-32d8e9ee878d WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c1d77b7c-2c1b-4c16-b303-52721406120c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b806360a-b7ae-41e3-8d7f-32d8e9ee878d", "created_at": "2026-04-12T07:47:45.403118+00:00", "updated_at": "2026-04-12T07:47:45.449881+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/b806360a-b7ae-41e3-8d7f-32d8e9ee878d", "rel": "self"}, {"href": "http://localhost/allocations/b806360a-b7ae-41e3-8d7f-32d8e9ee878d", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_199_owner_admin_cannot_get_vendor_passthru_methods [0.067917s] ... 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-cba37064-f215-43d8-99ee-47fac840f5fb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_port_changed_vif_pxe_portgroup_standalone_ports [0.103305s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_200_owner_manager_cannot_get_vendor_passthru_methods [0.069382s] ... 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-f1ccfde3-9ba3-4fdb-b59a-07626e078823 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address [0.048625s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_298_allocations_allocation_id_patch_member [0.084968s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/01ba7cb5-e9e1-424a-96f9-ab84d4d97956 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e9b66829-9539-4bdb-a744-c9f859def775 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "01ba7cb5-e9e1-424a-96f9-ab84d4d97956", "created_at": "2026-04-12T07:47:45.485110+00:00", "updated_at": "2026-04-12T07:47:45.533253+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/01ba7cb5-e9e1-424a-96f9-ab84d4d97956", "rel": "self"}, {"href": "http://localhost/allocations/01ba7cb5-e9e1-424a-96f9-ab84d4d97956", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_fail [0.053244s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_201_owner_service_cannot_get_vendor_passthru_methods [0.072040s] ... 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-cdfe0e22-4980-417e-abcc-7e3cb3732011 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_299_allocations_allocation_id_patch_reader [0.076251s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/924e3592-04ff-47b1-91e5-85ad15f0b2f0 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f0571959-d8a5-4604-92c1-d362020a3a94 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_address_no_vif [0.051546s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_202_owner_member_cannot_get_vendor_passthru_methods [0.069334s] ... 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-f64f2697-2f79-4899-9c34-99926967ea0b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_300_allocations_allocation_id_delete_admin [0.068077s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/c3fdfff8-f53d-41a6-b22d-9b4558b40b03 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-920ca38a-493d-4460-89e4-e94b123ea758 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_nopxe_ports [0.059177s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_053_nodes_states_secure_boot_put_admin [0.271109s] ... 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-41bb6801-8b22-40a6-b9ac-1429698757b0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_203_owner_reader_cannot_get_vendor_passthru_methods [0.068272s] ... 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-e9bf7150-228d-42c4-ac8e-6654fcfcfb84 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_301_allocations_allocation_id_delete_member [0.066166s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/562ba16d-8aa9-4ce9-8600-41a8d75bd12e GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-0531151d-243e-4160-9ade-178ee326f0d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_novif_pxe_ports [0.058209s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_054_nodes_states_secure_boot_put_member [0.064885s] ... 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-792ca830-7326-4eae-b3a5-1e4c48108dfb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_204_lessee_admin_cannot_get_vendor_passthru_methods [0.068644s] ... 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-46d0b43b-2f4e-44e9-bfda-d46b2dc817f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_302_allocations_allocation_id_delete_reader [0.063123s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/c6c149a7-4c7b-403d-a4b3-90d923da9b18 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-beb0de29-3ac7-4022-b547-a23b1c90f324 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_pxe_ports_exc [0.061090s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_055_nodes_states_secure_boot_put_observer [0.064389s] ... 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-91e172e0-f9ed-414b-b5d6-5bb571c2a776 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_nopxe_ports [0.055606s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_205_lessee_manager_cannot_get_vendor_passthru_methods [0.071145s] ... 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-b8d3b504-845d-4de2-bd34-b5e4b873adf2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_303_nodes_allocation_get_admin [0.071995s] ... 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-c61676d2-bc8d-433a-ae32-4a6b479e9e84 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e8ad9e26-94da-4965-9d6a-bc19d4f7bc2e", "created_at": "2026-04-12T07:47:45.847813+00:00", "updated_at": "2026-04-12T07:47:45.852306+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/e8ad9e26-94da-4965-9d6a-bc19d4f7bc2e", "rel": "self"}, {"href": "http://localhost/allocations/e8ad9e26-94da-4965-9d6a-bc19d4f7bc2e", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_056_nodes_states_provision_put_admin [0.074593s] ... 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-5793e91b-44ea-4d76-9ed8-fa6f2bec3346 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_nostandalone_ports_vif_pxe_ports [0.065324s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_206_lessee_member_cannot_get_vendor_passthru_methods [0.079866s] ... 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-663ca138-273f-431a-8b46-5fabcb2d682f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_304_nodes_allocation_get_member [0.076877s] ... 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-c3e98c34-d935-412d-8353-b4740b7631d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1d3abe73-d9d2-4142-9ef6-a9e6cbcd60f2", "created_at": "2026-04-12T07:47:45.923519+00:00", "updated_at": "2026-04-12T07:47:45.928128+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/1d3abe73-d9d2-4142-9ef6-a9e6cbcd60f2", "rel": "self"}, {"href": "http://localhost/allocations/1d3abe73-d9d2-4142-9ef6-a9e6cbcd60f2", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_remove_address [0.051249s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_057_nodes_states_provision_put_member [0.066812s] ... 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-087747b6-d903-4bb1-8b22-f0b5dea78071 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_305_nodes_allocation_get_reader [0.070392s] ... 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-98f574b6-072c-49ab-9f32-6ee6463264c3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "b3740b4c-913a-4e30-93d8-2c17948ef7b5", "created_at": "2026-04-12T07:47:45.995986+00:00", "updated_at": "2026-04-12T07:47:46.000425+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/b3740b4c-913a-4e30-93d8-2c17948ef7b5", "rel": "self"}, {"href": "http://localhost/allocations/b3740b4c-913a-4e30-93d8-2c17948ef7b5", "rel": "bookmark"}], "node_uuid": "22e26c0b-03f2-4d2e-ae87-c02d7f33c000"} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_noports [0.050622s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_207_lessee_reader_cannot_get_vendor_passthru_methods [0.078977s] ... 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-465dea98-773a-4b8f-8ae5-2cfefdb5d6a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_058_nodes_states_provision_put_observer [0.066403s] ... 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-2dc8f3da-9792-4edd-a03c-92bc54b19e0c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_nopxe_ports [0.052435s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_306_nodes_allocation_delete_admin [0.066376s] ... 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-7a5d1baf-9969-4305-a8dd-3f7937dc3a77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_208_owner_admin_cannot_get_vendor_passthru [0.066687s] ... 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-43c2e86f-8436-4230-ae19-5d763af069f6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_059_nodes_states_raid_put_admin [0.067121s] ... 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-9fc687df-a44b-49c5-8dc6-9726bc06011c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_novif_pxe_ports [0.052729s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_307_nodes_allocation_delete_member [0.066923s] ... 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-a4d31f0f-54d8-42a3-b525-ace5ff8caaa3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_209_owner_manager_cannot_get_vendor_passthru [0.068748s] ... 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-e87b4bf9-45a8-43bf-a46e-730f435e1aaf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_060_nodes_states_raid_put_member [0.066298s] ... 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-92f9f243-3264-470b-9374-0e1942890210 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_nopxe_ports [0.052096s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_308_nodes_allocation_delete_reader [0.065011s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/22e26c0b-03f2-4d2e-ae87-c02d7f33c000/allocation GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-37624992-d3b5-4f24-b6d7-8dac80c19c2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_update_portgroup_standalone_ports_vif_pxe_ports [0.050616s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_210_owner_service_cannot_get_vendor_passthru [0.069048s] ... 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-4cd27fed-1e00-4112-95b3-cf6733ed51c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_061_nodes_states_raid_put_observer [0.065665s] ... 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-28a407b9-64cf-4536-8483-984e74aaaa08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach [0.051674s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_309_deploy_templates_post_admin [0.072164s] ... 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/a435bf8e-b3d5-4653-a220-5a9ec906894b Openstack-Request-Id: req-0fda2ca9-7e7f-4b51-9ee2-9ca46135b10c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a435bf8e-b3d5-4653-a220-5a9ec906894b", "created_at": "2026-04-12T07:47:46.309938+00:00", "updated_at": null, "name": "CUSTOM_TEST_TEMPLATE", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/a435bf8e-b3d5-4653-a220-5a9ec906894b", "rel": "self"}, {"href": "http://localhost/deploy_templates/a435bf8e-b3d5-4653-a220-5a9ec906894b", "rel": "bookmark"}], "steps": [{"interface": "deploy", "step": "noop", "args": {}, "priority": 0}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_211_owner_member_cannot_get_vendor_passthru [0.068466s] ... 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-231b9077-a03c-445f-89e3-596c8fa97d34 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_062_nodes_states_console_get_admin [0.066140s] ... 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-bcae4cf9-845f-4a23-b9b4-e15e9b3781f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node [0.058588s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_310_deploy_templates_post_member [0.066855s] ... 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-25cb1176-8007-442e-bc50-27ca61b176d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_212_owner_reader_cannot_get_vendor_passthru [0.068549s] ... 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-9739a97e-b6e2-48d8-a24e-45d20ca97842 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_063_nodes_states_console_get_member [0.065506s] ... 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-fc5f59be-412b-4648-b039-48eb92476984 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_311_deploy_templates_post_reader [0.065590s] ... 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-5a963811-33ac-4913-8625-98077d39960d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_213_lessee_admin_cannot_get_vendor_passthru [0.065072s] ... 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-01fbbfb0-3348-4ea5-a886-639f83b3e746 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_064_nodes_states_console_put_admin [0.065860s] ... 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-0ab5c49d-0953-4f40-80d5-95ca28454be1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_312_deploy_templates_get_admin [0.063088s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c4bd64f8-fbd6-4b3c-99bd-1c82a6dabe6b 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": "1440695b-6f4b-4d3d-9277-7873f026fef5", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/1440695b-6f4b-4d3d-9277-7873f026fef5", "rel": "self"}, {"href": "http://localhost/deploy_templates/1440695b-6f4b-4d3d-9277-7873f026fef5", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_214_lessee_manager_cannot_get_vendor_passthru [0.064761s] ... 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-a73fa5f7-40de-4fd8-bee1-190faae6612d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_065_nodes_states_console_put_member [0.065278s] ... 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-fae3592d-ecf8-44ac-80eb-5096f3776935 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_313_deploy_templates_get_member [0.062092s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ececf421-3566-455b-8e2f-bf4b555706cb 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": "14a8b9df-2a7b-4ab8-9771-299fcba0582a", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/14a8b9df-2a7b-4ab8-9771-299fcba0582a", "rel": "self"}, {"href": "http://localhost/deploy_templates/14a8b9df-2a7b-4ab8-9771-299fcba0582a", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_215_lessee_member_cannot_get_vendor_passthru [0.066182s] ... 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-4be038bf-2c3d-4f27-9fdb-7c899890e7e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_066_nodes_states_console_put_observer [0.065990s] ... 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-241af744-60e3-4204-8560-9a5640d8baa5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_active_node_failure [0.255863s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_314_deploy_templates_get_reader [0.060872s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6eb0b654-3055-4653-bad8-a46a4c5340cf 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": "1cf26cb0-ab39-42af-8769-db366a67d6d9", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/deploy_templates/1cf26cb0-ab39-42af-8769-db366a67d6d9", "rel": "self"}, {"href": "http://localhost/deploy_templates/1cf26cb0-ab39-42af-8769-db366a67d6d9", "rel": "bookmark"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_216_lessee_reader_cannot_get_vendor_passthru [0.066387s] ... 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-c076eb85-6e38-4dd2-be7e-b41f0150105c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_067_nodes_vendor_passthru_methods_get_admin [0.064494s] ... 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-5aa8e49c-0ee1-4022-bf09-4645299a4f4b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_failure [0.053034s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_315_deploy_templates_deploy_template_id_get_admin [0.061404s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/96ea28a3-65fb-4e0e-8284-240a9ab790c8 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d370d1c9-d52b-454d-b951-b4715910981a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "96ea28a3-65fb-4e0e-8284-240a9ab790c8", "created_at": "2026-04-12T07:47:46.671981+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/96ea28a3-65fb-4e0e-8284-240a9ab790c8", "rel": "self"}, {"href": "http://localhost/deploy_templates/96ea28a3-65fb-4e0e-8284-240a9ab790c8", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_217_owner_admin_cannot_post_vendor_passthru [0.065772s] ... 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-2a82d0fd-8aa6-4f8f-a83f-d73736142478 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_multiple_segment_mappings [0.059683s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_068_nodes_vendor_passthru_methods_get_member [0.065300s] ... 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-ca92b864-afd0-4ecc-b718-b1b355f460fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_316_deploy_templates_deploy_template_id_get_member [0.065178s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/e216e99c-890a-47ab-8bbf-1f1cbc036ad8 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7446be4a-ed3d-4014-a217-0d6fe8aacc01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e216e99c-890a-47ab-8bbf-1f1cbc036ad8", "created_at": "2026-04-12T07:47:46.735598+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/e216e99c-890a-47ab-8bbf-1f1cbc036ad8", "rel": "self"}, {"href": "http://localhost/deploy_templates/e216e99c-890a-47ab-8bbf-1f1cbc036ad8", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_no_address [0.054574s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_218_owner_manager_cannot_post_vendor_passthru [0.066420s] ... 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-ebf4866e-141c-4c34-afab-a93f3f4237f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_069_nodes_vendor_passthru_methods_get_observer [0.067240s] ... 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-17526b0a-0d16-4811-a95e-3b2175249ce4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_317_deploy_templates_deploy_template_id_get_reader [0.065216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/dd942e09-104f-4c59-a15a-7f9a65cc940d WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1d310e39-2608-4d2c-b7d9-080eda255e6c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "dd942e09-104f-4c59-a15a-7f9a65cc940d", "created_at": "2026-04-12T07:47:46.800350+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/dd942e09-104f-4c59-a15a-7f9a65cc940d", "rel": "self"}, {"href": "http://localhost/deploy_templates/dd942e09-104f-4c59-a15a-7f9a65cc940d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_portgroup_physnet_inconsistent [0.056180s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_219_owner_service_cannot_post_vendor_passthru [0.063537s] ... 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-655148db-8322-433e-811f-a787a09c5fef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_070_nodes_vendor_passthru_get_admin [0.065853s] ... 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-00831e33-16b4-4922-a9f0-5253f467fbef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_update_port_exception [0.059836s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_318_deploy_templates_deploy_template_id_patch_admin [0.092519s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/4412eb77-7c02-403e-8989-ec5f610f4517 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9925c0f1-6c9d-4066-adda-8547e9d5947d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4412eb77-7c02-403e-8989-ec5f610f4517", "created_at": "2026-04-12T07:47:46.871298+00:00", "updated_at": "2026-04-12T07:47:46.914899+00:00", "name": "CUSTOM_MAGIC", "extra": {}, "links": [{"href": "http://localhost/v1/deploy_templates/4412eb77-7c02-403e-8989-ec5f610f4517", "rel": "self"}, {"href": "http://localhost/deploy_templates/4412eb77-7c02-403e-8989-ec5f610f4517", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "priority": 10}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_220_owner_member_cannot_post_vendor_passthru [0.064311s] ... 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-0431cf34-389c-4197-8d12-852385212ef1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_071_nodes_vendor_passthru_get_member [0.064107s] ... 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-72f9c9b2-c325-4994-b086-07c3a964e5a7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_attach_with_physnet [0.056912s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_319_deploy_templates_deploy_template_id_patch_member [0.068339s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/a0c296f0-1ca3-4b24-8892-7cebbb5d5d31 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-20e39693-a9c2-4ff9-ac08-26db8ca3ae23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_221_owner_reader_cannot_post_vendor_passthru [0.064270s] ... 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-f87d3140-6955-4fe4-9807-e6f6ebe0220c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_072_nodes_vendor_passthru_get_observer [0.065172s] ... 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-15fd404a-c910-4ef4-8b40-20149eed89ac X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach [0.051451s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_320_deploy_templates_deploy_template_id_patch_reader [0.068838s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/722cbb5d-f373-45f0-93f0-2bbc6b580d4e WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0ab6ae9a-16aa-45e1-98ee-e3f7e7abcb5d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node [0.059364s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_222_lessee_admin_cannot_post_vendor_passthru [0.089170s] ... 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-37748f46-215f-46a8-a530-9e27ec63fc81 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_073_nodes_vendor_passthru_post_admin [0.087715s] ... 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-0da53117-576f-4741-91b3-07537abd3580 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_321_deploy_templates_deploy_template_id_delete_admin [0.068582s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/9e0d22d2-622c-4069-8301-c9e322220d10 GOT Response: 204 No Content Openstack-Request-Id: req-96414519-d683-4f16-9462-901f6d5aac68 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_active_node_failure [0.056143s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_223_lessee_manager_cannot_post_vendor_passthru [0.063788s] ... 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-ede60946-afc7-416d-b530-ead29f7b96d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_074_nodes_vendor_passthru_post_member [0.064546s] ... 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-8fcd8f9d-f712-46e0-8d0a-849b68e52289 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_deleting_node [0.051918s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_224_lessee_member_cannot_post_vendor_passthru [0.066732s] ... 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-d36c599a-9e59-446b-98fc-5bce3ed29144 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_075_nodes_vendor_passthru_post_observer [0.063153s] ... 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-c9940048-8090-405d-9bca-e2bf02270b40 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_not_attached [0.045818s] ... ok {0} ironic.tests.unit.drivers.modules.network.test_common.TestNeutronVifPortIDMixin.test_vif_detach_portgroup [0.048618s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_225_lessee_reader_cannot_post_vendor_passthru [0.063467s] ... 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-f0bce1bc-9a4a-430e-a781-503bd3450165 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_076_nodes_vendor_passthru_put_admin [0.062896s] ... 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-0b23d443-52d8-481e-8b95-e96f1f2e93e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_bios_registry_save [0.061541s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_226_owner_admin_cannot_put_vendor_passthru [0.063095s] ... 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-6c02fba1-a5ad-445d-b392-c2d6db3c7503 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_077_nodes_vendor_passthru_put_member [0.062454s] ... 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-194767fd-415b-48fb-802b-17cf83bd5354 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_322_deploy_templates_deploy_template_id_delete_member [0.258372s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/cb079297-39f9-49fc-ae45-316d15cf828c GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f17b74db-994b-4ebd-861d-fc88e3751041 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_empty_bios_registry [0.064916s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_078_nodes_vendor_passthru_put_observer [0.064475s] ... 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-65a80dee-b15d-45f0-be73-aa5b855825c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_323_deploy_templates_deploy_template_id_delete_reader [0.058360s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/e1135872-25bf-41c9-b2a1-40a02cd11977 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e213df03-a676-42b6-a70b-d1ef2af4874b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_exception_bios_registry [0.062367s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_079_nodes_vendor_passthru_delete_admin [0.063996s] ... 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-1a3a0564-f261-4383-ad06-eba4131f5c9d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_324_chassis_post_admin [0.063908s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 201 Created Content-Type: application/json Location: http://localhost/v1/chassis/297ee79b-4253-436d-8111-8afd134880eb Openstack-Request-Id: req-ff2a3b3c-dd25-4430-a0c5-9a9805f13a3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "297ee79b-4253-436d-8111-8afd134880eb", "created_at": "2026-04-12T07:47:47.507845+00:00", "updated_at": null, "description": "test-chassis", "extra": {}, "links": [{"href": "http://localhost/v1/chassis/297ee79b-4253-436d-8111-8afd134880eb", "rel": "self"}, {"href": "http://localhost/chassis/297ee79b-4253-436d-8111-8afd134880eb", "rel": "bookmark"}], "nodes": [[{"href": "http://localhost/v1/chassis/297ee79b-4253-436d-8111-8afd134880eb/nodes", "rel": "self"}, {"href": "http://localhost/chassis/297ee79b-4253-436d-8111-8afd134880eb/nodes", "rel": "bookmark"}]]} {0} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosRegistryTestCase.test_cache_no_bios_registry [0.063972s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_080_nodes_vendor_passthru_delete_member [0.064150s] ... 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-c19bba00-c31f-46a8-ba25-28bafde82dc7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_325_chassis_post_member [0.062017s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-46ae2184-d842-48f9-bc70-ead94a02b67d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning [0.060328s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_227_owner_manager_cannot_put_vendor_passthru [0.253694s] ... 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-d3d2a876-3116-44bc-b2e5-d295823f0b77 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_081_nodes_vendor_passthru_delete_observer [0.064156s] ... 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-75d3de53-ab9b-40bb-a655-6c3c95fd150b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_326_chassis_post_reader [0.062292s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b8aa316a-c767-4d7b-938f-6387647b4510 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_cleaning_failed [0.059558s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_228_owner_service_cannot_put_vendor_passthru [0.065931s] ... 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-69e866be-fba6-42c8-82ff-35a5f8e2e2b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_082_nodes_traits_get_admin [0.065195s] ... 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-6119c3fc-9540-4529-b4aa-d86f9bedae11 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_327_chassis_get_admin [0.062381s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-510955fe-142b-4665-a1df-9471190a7ccb 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying [0.061794s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_229_owner_member_cannot_put_vendor_passthru [0.066689s] ... 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-140c800d-bbbe-4792-84b4-7bba9a804ef7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_083_nodes_traits_get_member [0.065574s] ... 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-60a9b2fc-1080-4f47-b631-a03f3fce8f3b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_328_chassis_get_member [0.066232s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-22387bc4-b259-4450-9ab9-f4631fc51c08 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_post_reboot_deploying_failed [0.061846s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_230_owner_reader_cannot_put_vendor_passthru [0.069304s] ... 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-354c3cba-1e01-4de8-a0df-fdb3727de0ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_084_nodes_traits_get_observer [0.068866s] ... 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-75e9bfe5-d47f-4fd9-b29c-d99194df4a87 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_329_chassis_get_reader [0.069250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-342726d7-3f80-4a0b-9cd5-beea6c827f56 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_cleaning [0.067655s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_231_lessee_admin_cannot_put_vendor_passthru [0.072354s] ... 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-23d4badd-55da-41fb-ae66-cf1d8d159de0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_085_nodes_traits_put_admin [0.072010s] ... 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-5d72f602-3b2b-4fa3-81e0-0a30b98e9c89 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_330_chassis_get_service [0.072374s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8908f0b2-74aa-408c-8f44-bdc3a649d1b1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_deploying [0.070732s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_232_lessee_manager_cannot_put_vendor_passthru [0.067772s] ... 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-06d20842-9b9e-4ad7-aff4-92d176939d4a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_086_nodes_traits_put_member [0.070555s] ... 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-f606f491-71af-4aea-b691-27d9179fde61 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_331_chassis_detail_get_admin [0.068214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-87ba8c1a-a853-419b-86ad-014d62ed129f 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": "2026-04-12T07:47:47.949436+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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_conf_step_pre_reboot_fast_track [0.067043s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_233_lessee_member_cannot_put_vendor_passthru [0.064273s] ... 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-562d3474-1068-4b24-bd61-ff3b01399361 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_087_nodes_traits_put_observer [0.067909s] ... 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-82472104-a3fb-458f-aaf8-7d8f839ff606 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_immediate [0.058557s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_332_chassis_detail_get_member [0.067541s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2919173c-479f-488d-a16d-34dd8a6447f7 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": "2026-04-12T07:47:48.017496+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.TestRBACProjectScoped.test_project_scoped_234_lessee_reader_cannot_put_vendor_passthru [0.065916s] ... 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-0985b2cf-30d1-45ff-82db-4e6fc02bd945 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_088_nodes_traits_delete_admin [0.066040s] ... 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-a0de3fb0-7049-4f14-8a99-ee4c6200bc0b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_333_chassis_detail_get_reader [0.062984s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-82865841-dd9b-49dc-91fb-e8e007e7f024 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": "2026-04-12T07:47:48.083530+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.TestRBACProjectScoped.test_project_scoped_235_owner_admin_cannot_delete_vendor_passthru [0.062688s] ... 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-5d855d75-4c46-4b23-9acf-5ccbd4d37316 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_089_nodes_traits_delete_member [0.063791s] ... 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-68664945-ac48-4e67-b4be-0ddc5ac0b9d9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_334_chassis_chassis_id_get_admin [0.062598s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e429b68b-3f9a-41af-b36a-d2b063223711 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": "2026-04-12T07:47:48.145870+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.TestRBACProjectScoped.test_project_scoped_236_owner_manager_cannot_delete_vendor_passthru [0.063676s] ... 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-4dfd81a4-9494-4750-a6a4-f86c101f7ec9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_335_chassis_chassis_id_get_member [0.061345s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-939c05a8-fe5d-4ffb-9451-f1f5ef6acb5f 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": "2026-04-12T07:47:48.209690+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.TestRBACProjectScoped.test_project_scoped_237_owner_service_cannot_delete_vendor_passthru [0.064301s] ... 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-78063abf-a732-4b1b-ae4a-150647763aae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_336_chassis_chassis_id_get_reader [0.060435s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93183f30-eaa3-4ae8-acee-acefa9472157 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": "2026-04-12T07:47:48.270379+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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_apply_time_on_reset [0.271087s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_238_owner_member_cannot_delete_vendor_passthru [0.063463s] ... 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-10058036-245f-4813-9475-a36639f0196f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_fail [0.042570s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_337_chassis_chassis_id_patch_admin [0.069151s] ... 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-a0ca911b-557a-45b5-a324-e66e2236224d 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": "2026-04-12T07:47:48.331608+00:00", "updated_at": "2026-04-12T07:47:48.360703+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"}]]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_239_owner_reader_cannot_delete_vendor_passthru [0.063090s] ... 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-bd61e721-2c29-427e-85c1-9ddf53faf393 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_no_apply_time_attr [0.059885s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_090_nodes_traits_delete_observer [0.263097s] ... 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-bd691bdb-b4fe-43f6-933b-ea329d9e4965 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_338_chassis_chassis_id_patch_member [0.068789s] ... 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-61f34855-a1b0-4f3a-a92d-f229a1e6e0f6 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": "2026-04-12T07:47:48.401594+00:00", "updated_at": "2026-04-12T07:47:48.430723+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"}]]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_240_lessee_admin_cannot_delete_vendor_passthru [0.064558s] ... 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-89672d2a-db0e-40c2-8901-22b4b898dcf7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_no_supported_apply_times [0.064727s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_339_chassis_chassis_id_patch_reader [0.061786s] ... 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-922d1818-08d2-46a1-818d-82d83eb4fbbc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_091_nodes_traits_trait_put_admin [0.069044s] ... 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-f4f1b7e3-040e-48fe-8ba0-a90b6a2ac99c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_apply_configuration_not_supported [0.045066s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_241_lessee_manager_cannot_delete_vendor_passthru [0.064444s] ... 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-922e5325-52ae-4f4e-8a6f-7ddcb077308c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_340_chassis_chassis_id_delete_admin [0.069144s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 204 No Content Openstack-Request-Id: req-c69e5e0d-f389-44b6-923d-869cf08492ed 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.test_acl.TestRBACScoped.test_rbac_legacy_092_nodes_traits_trait_put_member [0.067563s] ... 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-7dd59073-e523-45b6-beb3-af97f60e0823 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings [0.067406s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_242_lessee_member_cannot_delete_vendor_passthru [0.063848s] ... 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-b3f48039-054b-43ef-946e-bc543ffc6ea2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_341_chassis_chassis_id_delete_member [0.060488s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-78205415-b480-49bf-866d-67d15e7d1157 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_093_nodes_traits_trait_put_observer [0.069289s] ... 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-cde88adf-9a19-44e8-aac2-1c412ee43726 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_no_bios [0.065193s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_243_lessee_reader_cannot_delete_vendor_passthru [0.064089s] ... 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-86e99dae-9fd7-4f4d-99f6-ebecca696b4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACScopedRequests.test_system_scoped_342_chassis_chassis_id_delete_reader [0.061137s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d637b8c2-eeb6-434f-8bb0-3a4bf073a323 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_094_nodes_traits_trait_delete_admin [0.068635s] ... 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-f52cc51e-e8dd-4471-987e-13450565fca6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_cache_bios_settings_noop [0.068598s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_244_owner_reader_get_traits [0.068704s] ... 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-fbcea7ef-6a9a-42c1-9d17-51665f462443 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.api.test_acl.TestRBACScopedRequests.test_system_scoped_343_chassis_chassis_id_delete_service [0.061549s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/chassis/e74c40e0-d825-11e2-a28f-0800200c9a66 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a0353a80-43e0-49b9-8816-f2b84bf9c7b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_095_nodes_traits_trait_delete_member [0.069345s] ... 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-e7c667ac-5825-4867-87f1-17fba3e9c74c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_check_bios_attrs [0.057669s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_245_lessee_reader_get_traits [0.070732s] ... 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-1216dd1c-3418-4780-af57-787945b39cba 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.api.test_acl.TestRBACScopedRequests.test_system_scoped_344_node_history_get_admin [0.070303s] ... 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-71ce768f-ccc3-463f-9ec9-7f0fec1e724c 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": "ca5aec7f-96ac-48f9-adc9-0389d0c935d7", "created_at": "2026-04-12T07:47:48.801581+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/ca5aec7f-96ac-48f9-adc9-0389d0c935d7", "rel": "self"}]}]} {0} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_fail [0.044736s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_096_nodes_traits_trait_delete_observer [0.068908s] ... 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-0032120d-b6f4-4843-9b2e-86c4b8353f37 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_not_supported [0.043984s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_246_third_party_admin_cannot_get_traits [0.071800s] ... 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-fb36f3ec-8970-42bf-8292-5d1dfb405bfd X-Openstack-Ironic-Api-Maximum-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.test_acl.TestRBACScopedRequests.test_system_scoped_345_node_history_get_member [0.068796s] ... 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-b3297124-d1a7-4fd7-811b-fd9f215e59a9 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": "2f47cc75-88a1-4ef5-9031-8b18740699ff", "created_at": "2026-04-12T07:47:48.871110+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/2f47cc75-88a1-4ef5-9031-8b18740699ff", "rel": "self"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_097_nodes_vifs_get_admin [0.066763s] ... 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-25aa2197-f79a-4610-a91d-9f663a49890a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_cleaning [0.063031s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_247_owner_admin_can_put_traits [0.072918s] ... 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-3347ded9-0594-435a-94bc-ade9eea285c0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_346_node_history_get_reader [0.069296s] ... 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-9a5a6019-2a0a-4f2e-865c-c72c245b4973 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": "23cf3b3a-c736-48b4-9f68-c7542b3c7bfd", "created_at": "2026-04-12T07:47:48.939400+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/23cf3b3a-c736-48b4-9f68-c7542b3c7bfd", "rel": "self"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_098_nodes_vifs_get_member [0.070221s] ... 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-67f27bc8-be8b-49c5-bbba-c59088b43317 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_post_reboot_deploying [0.089319s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_347_node_history_get_service [0.073058s] ... 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-ec461839-59b1-4a6b-bd11-63821da636c7 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": "69516986-1bf5-43d1-b54d-ec6b1be20fc8", "created_at": "2026-04-12T07:47:49.013698+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/69516986-1bf5-43d1-b54d-ec6b1be20fc8", "rel": "self"}]}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_248_owner_manager_can_put_traits [0.079388s] ... 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-e22402ad-52de-4661-9da5-ae36fbf462aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_099_nodes_vifs_get_observer [0.075865s] ... 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-67a48666-36d2-41a6-af85-365c8fa6b890 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_348_node_history_get_entry_admin [0.078836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/7b07c808-1116-40b0-8f82-cd074b79d8c6 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-74944aad-4d8c-452b-ac6e-e7fae542557f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7b07c808-1116-40b0-8f82-cd074b79d8c6", "created_at": "2026-04-12T07:47:49.092935+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/7b07c808-1116-40b0-8f82-cd074b79d8c6", "rel": "self"}]} {0} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_cleaning [0.093052s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_249_owner_service_can_put_traits [0.087500s] ... 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-89312115-bdca-4aba-bb63-51bbbdb20d57 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_100_nodes_vifs_post_admin [0.074356s] ... 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-d60b52de-21cc-4935-b427-f29887499541 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_349_node_history_get_entry_member [0.069637s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c3db06a1-0b36-490f-a302-ac6a834d4f87 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-568651b0-1518-4b50-a5ab-1f95a3ab31f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c3db06a1-0b36-490f-a302-ac6a834d4f87", "created_at": "2026-04-12T07:47:49.163339+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/c3db06a1-0b36-490f-a302-ac6a834d4f87", "rel": "self"}]} {0} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_deploying [0.069554s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_250_owner_member_cannot_put_traits [0.073767s] ... 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-694ab0bd-589d-4eb9-85a2-14d72b711475 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_101_nodes_vifs_post_member [0.066715s] ... 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-2c0f2918-9856-4690-969c-f14471aebd2a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_350_node_history_get_entry_reader [0.069336s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4908ea51-ccd0-4f07-9f83-27f521b3804a WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f226e05d-187e-4dbe-98a6-dbc3bd11ec0c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4908ea51-ccd0-4f07-9f83-27f521b3804a", "created_at": "2026-04-12T07:47:49.234816+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/4908ea51-ccd0-4f07-9f83-27f521b3804a", "rel": "self"}]} {0} ironic.tests.unit.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_factory_reset_step_pre_reboot_fast_track [0.068913s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_251_lessee_admin_cannot_put_traits [0.071561s] ... 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-de51fcbb-8a9d-4015-bcac-94df5a124e02 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_102_nodes_vifs_post_observer [0.067358s] ... 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-2589ac09-ab1f-46da-8982-c3ee0edc4d1c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_get_properties [0.038479s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_351_node_inventory_get_admin [0.070398s] ... 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-f1da5e9b-e47e-4458-8fce-f0015a65428c 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.api.test_acl.TestRBACScoped.test_rbac_legacy_103_nodes_vifs_node_vif_ident_delete_admin [0.067820s] ... 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-3d53953a-a2af-4d5e-a613-c520fdb1f3c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_252_lessee_manager_cannot_put_traits [0.072028s] ... 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-29e5e8c1-a5e0-4483-acd0-3a1e9698df1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_post_configuration [0.056468s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_352_node_inventory_get_reader [0.067353s] ... 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-a182ff08-3487-4a45-937d-4aa72ac5c36a 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.drivers.modules.redfish.test_bios.RedfishBiosTestCase.test_validate [0.036873s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_104_nodes_vifs_node_vif_ident_delete_member [0.064796s] ... 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-f7f308c7-e00c-407f-8e53-2f258714a00b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_253_lessee_member_cannot_put_traits [0.070218s] ... 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-2c8c90c9-6f4b-4e9f-bf16-0091eaf5e3f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device [0.030584s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__has_vmedia_device_inserted [0.029340s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_353_node_history_get_entry_service [0.070210s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/4ff973ac-b02c-47e9-bc87-7836e9568c40 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7a731422-5105-45be-b35e-db5776fdfd79 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4ff973ac-b02c-47e9-bc87-7836e9568c40", "created_at": "2026-04-12T07:47:49.443523+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/4ff973ac-b02c-47e9-bc87-7836e9568c40", "rel": "self"}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_105_nodes_vifs_node_vif_ident_delete_observer [0.070547s] ... 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-d5439dfd-1f75-41d2-a719-12e5c8914d2e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_254_third_party_admin_cannot_put_traits [0.073240s] ... 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-13ca55a4-a207-4e0e-b6cd-fabd9c761073 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_already_inserted [0.040643s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_354_shard_get_shards [0.060708s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-da88fc5d-efcf-4337-b794-b8bc29c498a9 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}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew [0.039834s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_106_nodes_management_indicators_get_admin [0.072313s] ... 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-c69b643f-d8ce-4d67-b774-b10520a46a2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_255_owner_admin_can_delete_traits [0.067329s] ... 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-d9b6c256-8dc5-482d-b325-ce0bea469842 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew_dvd [0.042060s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_anew_dvd_retry [0.040738s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_355_shard_patch_set_node_shard [0.100107s] ... 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-b4761037-b2b7-4033-8e4e-d3d68584f1bc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_107_nodes_management_indicators_get_member [0.071244s] ... 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-956ae979-cd9d-42f0-b7bc-15fc1e34a4f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_256_owner_manager_can_delete_traits [0.069467s] ... 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-40870d18-9e73-457d-8db1-2671bbd62974 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_bad_device [0.042419s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_356_shard_patch_set_node_shard_disallowed [0.068100s] ... 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-e87372b1-9702-428c-b162-ab40b429509f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_257_owner_member_cannot_delete_traits [0.065921s] ... 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-047be711-ded7-4560-bd4f-f62edc289c5f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_108_nodes_management_indicators_get_observer [0.069985s] ... 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-6af082f5-73d4-4297-85a5-f634afec9648 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_empty_media_type [0.036278s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__insert_vmedia_while_ejecting [0.041863s] ... ok {1} 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. {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_258_lessee_admin_cannot_delete_traits [0.066797s] ... 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-9232180a-1e28-45b1-b636-464ee435c9f2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_compatible_with_idrac [0.038964s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_357_parent_node_patch_by_admin [0.104108s] ... 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-e00206b0-726f-4956-b0e6-e27914559248 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.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. {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test__validate_vendor_incompatible_with_idrac [0.040172s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_259_lessee_manager_cannot_delete_traits [0.066311s] ... 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-acf7652a-4faa-4c26-8ea7-9d0d21d980b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_cdrom_and_floppy [0.043695s] ... ok {1} 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.api.test_acl.TestRBACProjectScoped.test_project_scoped_260_lessee_member_cannot_delete_traits [0.065569s] ... 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-c7c4b618-8240-4d42-b242-a49072eb7173 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_only_cdrom [0.040579s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_112_portgroups_get_admin [0.066822s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-24921cac-d661-413e-b53e-addcff9ba3ad X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_instance_ramdisk [0.039596s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_clean_up_ramdisk [0.038978s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_113_portgroups_get_member [0.066612s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-fa980a6d-95cd-4a5a-aa81-9426c9230249 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_rbac_legacy_114_portgroups_get_observer [0.065470s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a4d2f553-e984-47f5-85b6-f94e51377ea8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_358_parent_node_patch_by_member [0.307047s] ... 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-9e69303a-669a-446c-900a-113aaef6d850 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACProjectScoped.test_project_scoped_261_third_party_admin_cannot_delete_traits [0.246999s] ... 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-5e480d4d-3ad2-4b1f-b17d-d8fb910dd341 X-Openstack-Ironic-Api-Maximum-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.api.test_acl.TestRBACScoped.test_rbac_legacy_115_portgroups_post_admin [0.078363s] ... 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-59eb00f2-4031-46ea-b364-1969b9f69e09 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScopedRequests.test_system_scoped_359_parent_node_patch_by_reader [0.071291s] ... 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-f01bccf1-bc4f-46e3-9774-8b61e4f889ce X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_262_owner_admin_can_put_custom_traits [0.067742s] ... 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-750fe1e9-6905-4606-b5d9-b3b9fb22028d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_116_portgroups_post_member [0.073876s] ... 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-4762cbea-6711-49e4-ac1c-7a6a942a38d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_everything [0.257543s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_360_nodes_firmware_component_get_admin [0.067234s] ... 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-c38ad365-9a4b-4e9b-9c15-799345c66989 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": "2026-04-12T07:47:50.224220+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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_not_inserted [0.047123s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_263_owner_manager_can_put_custom_traits [0.072854s] ... 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-4929044d-3f3a-4fbf-a82f-d38af47cbb59 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_117_portgroups_post_observer [0.074026s] ... 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-00d00fab-6438-4ca1-a6d6-e81c382d0bdf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScopedRequests.test_system_scoped_361_nodes_firmware_component_get_member [0.068957s] ... 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-5c03ffe9-b38a-4031-adc2-dc3913d541d4 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": "2026-04-12T07:47:50.294217+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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_specific [0.044951s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_264_owner_member_cannot_put_custom_traits [0.068248s] ... 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-16c2853d-09d6-40e9-bef3-f1330ed8e86e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_118_portgroups_detail_get_admin [0.064516s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cbcde0ac-e6cd-4a79-a7e0-0ca673f75b76 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_362_nodes_firmware_component_get_reader [0.067542s] ... 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-c6b8d409-ee2a-468a-aab2-82b6b90d9dde 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": "2026-04-12T07:47:50.361700+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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_unknown [0.051889s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_265_lessee_admin_cannot_put_custom_traits [0.068319s] ... 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-cdf74901-1263-4092-a429-d74bb94f3b9a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_eject_vmedia_with_dvd_cisco_ucs [0.045593s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_119_portgroups_detail_get_member [0.063721s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ef4693e3-efae-4fbc-80da-69f82213263c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_363_runbooks_post_admin [0.071980s] ... 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/78f8813b-e1ac-42b0-bf47-6e7d5d7c8b0e Openstack-Request-Id: req-62958e4b-87bc-4597-aaa2-b5865637be9f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "78f8813b-e1ac-42b0-bf47-6e7d5d7c8b0e", "created_at": "2026-04-12T07:47:50.452935+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/78f8813b-e1ac-42b0-bf47-6e7d5d7c8b0e", "rel": "self"}, {"href": "http://localhost/runbooks/78f8813b-e1ac-42b0-bf47-6e7d5d7c8b0e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info [0.040259s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_266_lessee_manager_cannot_put_custom_traits [0.071907s] ... 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-6b3e11c8-28db-4183-b653-c932c444b351 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_deploy_info_exc [0.035287s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_120_portgroups_detail_get_observer [0.073187s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9087a1c7-8f52-4e16-9c87-23e21b41fa59 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_364_runbooks_post_member [0.078479s] ... 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/82463fe4-7164-49b0-8881-f7d57727f08b Openstack-Request-Id: req-7175ebfc-d7db-40c0-9e92-ba613a382ab3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "82463fe4-7164-49b0-8881-f7d57727f08b", "created_at": "2026-04-12T07:47:50.532344+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/82463fe4-7164-49b0-8881-f7d57727f08b", "rel": "self"}, {"href": "http://localhost/runbooks/82463fe4-7164-49b0-8881-f7d57727f08b", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_arch_deploy [0.037827s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_267_lessee_member_cannot_put_custom_traits [0.075761s] ... 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-565231b1-ec2d-4188-871c-ada522ad83e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_arch_rescue [0.040683s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_121_portgroups_portgroup_ident_get_admin [0.085668s] ... 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-d4869ed3-c807-4db9-9943-252318d607b2 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_365_runbooks_post_reader [0.078656s] ... 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-ce16f52f-8c4a-4979-bbfa-4dc7d48e8b47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_hierarchy_deploy [0.038583s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_268_third_party_admin_cannot_put_custom_traits [0.075297s] ... 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-74d1e0fb-c4ed-4f62-bf86-6c692461681d X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_hierarchy_missing_param_deploy [0.035793s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_122_portgroups_portgroup_ident_get_member [0.078017s] ... 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-c8f2de78-caa3-4264-adbe-6ab3e44cb66e X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_366_runbooks_get_admin [0.067866s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cd3d0ea7-33da-4f00-a996-11fc1999975b 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": "d5401771-62b4-4c0c-97ac-f19622a63e77", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/d5401771-62b4-4c0c-97ac-f19622a63e77", "rel": "self"}, {"href": "http://localhost/runbooks/d5401771-62b4-4c0c-97ac-f19622a63e77", "rel": "bookmark"}]}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_hierarchy_missing_param_rescue [0.036625s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_269_owner_reader_get_vifs [0.068138s] ... 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-d4eb30ac-7fd3-4c39-8e71-cccf3b19a2a2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_choose_by_hierarchy_rescue [0.034828s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_123_portgroups_portgroup_ident_get_observer [0.077083s] ... 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-1d5a8097-2da3-420b-b18b-cce6d5101f16 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_367_runbooks_get_member [0.078890s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5f88c3bb-68d7-4e15-abd7-610b81e87d28 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": "566dea8c-601d-4c20-bd76-8af1e16b0c71", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/566dea8c-601d-4c20-bd76-8af1e16b0c71", "rel": "self"}, {"href": "http://localhost/runbooks/566dea8c-601d-4c20-bd76-8af1e16b0c71", "rel": "bookmark"}]}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_deploy [0.038042s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_exc [0.037762s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_270_lessee_reader_get_vifs [0.090415s] ... 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-4a799c86-7d08-436a-86da-3addb0a0a639 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_368_runbooks_get_reader [0.073201s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1d84587c-ecfb-4774-9943-77778598f451 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": "2c9d6789-ab0c-44a5-a3e8-48c7a1372fb8", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/2c9d6789-ab0c-44a5-a3e8-48c7a1372fb8", "rel": "self"}, {"href": "http://localhost/runbooks/2c9d6789-ab0c-44a5-a3e8-48c7a1372fb8", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_124_portgroups_portgroup_ident_patch_admin [0.078842s] ... 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-e3f0874b-65a2-44cd-8bc6-038d8ceb9db5 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_deploy [0.041095s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_271_third_party_admin_cannot_get_vifs [0.066073s] ... 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-d8b39727-9f47-44c8-88bb-c513e4284cb6 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_deploy_by_arch [0.039728s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_369_runbooks_runbook_id_get_admin [0.067550s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/094a67da-8df0-4abf-b925-090459c8f019 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8acd1107-06a4-49cb-bfe0-cc914cbfb7ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "094a67da-8df0-4abf-b925-090459c8f019", "created_at": "2026-04-12T07:47:50.893603+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/094a67da-8df0-4abf-b925-090459c8f019", "rel": "self"}, {"href": "http://localhost/runbooks/094a67da-8df0-4abf-b925-090459c8f019", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_rescue [0.035504s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_272_owner_admin_can_post_vifs [0.067598s] ... 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-e1fa123c-5051-4b46-8dc3-dfd45e25b844 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_from_conf_rescue_by_arch [0.035852s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_370_runbooks_runbook_id_get_member [0.066085s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/af6abca8-4b49-4f5f-9829-0d6ec2051f89 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f8402578-ed92-4af0-8d4f-d73230cadc53 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "af6abca8-4b49-4f5f-9829-0d6ec2051f89", "created_at": "2026-04-12T07:47:50.961482+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/af6abca8-4b49-4f5f-9829-0d6ec2051f89", "rel": "self"}, {"href": "http://localhost/runbooks/af6abca8-4b49-4f5f-9829-0d6ec2051f89", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso [0.035627s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_273_service_can_post_vifs_for_own_project [0.068863s] ... 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-57ffc580-0452-42c3-9d44-f130b91ac750 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_iso_deprecated [0.035681s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_371_runbooks_runbook_id_get_reader [0.067931s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/c361d268-06d0-4553-9090-36cae95dad67 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-571f7ee0-8669-4bfe-a2b7-8acba06c570e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c361d268-06d0-4553-9090-36cae95dad67", "created_at": "2026-04-12T07:47:51.027957+00:00", "updated_at": null, "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/c361d268-06d0-4553-9090-36cae95dad67", "rel": "self"}, {"href": "http://localhost/runbooks/c361d268-06d0-4553-9090-36cae95dad67", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_deploy [0.035097s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_274_service_cannot_post_vifs_for_other_project [0.071531s] ... 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-244327f1-3841-4069-915c-682f5907c257 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_deploy_by_arch [0.035564s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_125_portgroups_portgroup_ident_patch_member [0.292647s] ... 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-b28ce468-d800-4aee-8b3a-9f7c4dcef03c X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_372_runbooks_runbook_id_patch_admin [0.094504s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/cec04bf5-ad7a-401f-be8a-76061c2fc488 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cb5665ff-afda-49b5-8bf1-3f0ca9adbecb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "cec04bf5-ad7a-401f-be8a-76061c2fc488", "created_at": "2026-04-12T07:47:51.098267+00:00", "updated_at": "2026-04-12T07:47:51.131898+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/cec04bf5-ad7a-401f-be8a-76061c2fc488", "rel": "self"}, {"href": "http://localhost/runbooks/cec04bf5-ad7a-401f-be8a-76061c2fc488", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_rescue [0.038979s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_275_owner_manager_can_post_vifs [0.070619s] ... 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-507f30c6-5916-4ac2-a2db-ac6292de5c17 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_mixed_source_rescue_by_arch [0.035953s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_126_portgroups_portgroup_ident_patch_observer [0.073326s] ... 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-02f1349a-1344-4c24-b0aa-c7db63de45ea X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_ramdisk [0.033297s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_373_runbooks_runbook_id_patch_member [0.094471s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/2611b699-ddba-4eb0-9899-e4e94e78f2bc WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e120307-10d5-4752-a901-8bd6a4f9540f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2611b699-ddba-4eb0-9899-e4e94e78f2bc", "created_at": "2026-04-12T07:47:51.194061+00:00", "updated_at": "2026-04-12T07:47:51.227498+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/2611b699-ddba-4eb0-9899-e4e94e78f2bc", "rel": "self"}, {"href": "http://localhost/runbooks/2611b699-ddba-4eb0-9899-e4e94e78f2bc", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_276_lessee_admin_can_post_vifs [0.068099s] ... 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-33a7a3f9-6ba4-4d2a-86fc-eca50fde147e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable [0.037116s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_127_portgroups_portgroup_ident_delete_admin [0.065671s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-882bc455-201a-46ad-89e9-a45cec4a2eb9 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_removable_deprecated [0.037339s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_374_runbooks_runbook_id_patch_reader [0.070811s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/7734b9b8-5c23-4ef2-a6b8-3c9288912135 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-87bac9b2-3878-4a49-a012-599f141d8899 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_277_lessee_manager_can_post_vifs [0.070229s] ... 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-a29bc37c-58a3-4d79-ba45-8c3bdae2a005 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_parse_driver_info_rescue [0.037331s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_128_portgroups_portgroup_ident_delete_member [0.073686s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7a2a378d-5f33-4fe3-8455-e627dc5cd114 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_278_owner_member_can_post_vifs [0.070583s] ... 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-483a4084-3605-4e67-af9d-3b48deb4604b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_375_runbooks_runbook_id_patch_public_admin [0.089756s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/9cc15755-fd5e-44ab-a9ae-9f0cfa6ce869 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-fde2dce1-95a9-443b-97c4-68e700bed816 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9cc15755-fd5e-44ab-a9ae-9f0cfa6ce869", "created_at": "2026-04-12T07:47:51.356794+00:00", "updated_at": "2026-04-12T07:47:51.388947+00:00", "name": "CUSTOM_DT1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/9cc15755-fd5e-44ab-a9ae-9f0cfa6ce869", "rel": "self"}, {"href": "http://localhost/runbooks/9cc15755-fd5e-44ab-a9ae-9f0cfa6ce869", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_boot_option [0.074207s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_129_portgroups_portgroup_ident_delete_observer [0.078101s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6facea4a-3ac4-47c3-ad90-b7a21a45b3c5 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_279_lessee_member_cannot_post_vifs [0.074317s] ... 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-6b522471-ebbc-4800-834d-5346dede6471 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_local_whole_disk_image [0.071218s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_376_runbooks_runbook_id_patch_public_member [0.091790s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/c4eb1a2a-96ba-4f4c-809c-64e6c5672cd6 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2101e5f5-278d-4b49-97a1-073d9ea6b55f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "c4eb1a2a-96ba-4f4c-809c-64e6c5672cd6", "created_at": "2026-04-12T07:47:51.447739+00:00", "updated_at": "2026-04-12T07:47:51.480184+00:00", "name": "CUSTOM_DT1", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/c4eb1a2a-96ba-4f4c-809c-64e6c5672cd6", "rel": "self"}, {"href": "http://localhost/runbooks/c4eb1a2a-96ba-4f4c-809c-64e6c5672cd6", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_130_nodes_portgroups_get_admin [0.074137s] ... 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-d1631b34-949b-4974-9313-f75970abf6a9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_280_owner_reader_cannot_post_vifs [0.080319s] ... 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-4616943b-064a-4540-a1df-87412ed2a7ef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_377_runbooks_runbook_id_patch_public_reader [0.068439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/c6a17acf-8615-4959-ac1b-e9f18b242f3e WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cf7ad9e5-7842-45d7-af2e-3d620ade63b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_normal_boot [0.092652s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_131_nodes_portgroups_get_member [0.071285s] ... 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-d19c3c16-dcb2-4d05-9529-641fc98fd8a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_281_lessee_reader_cannot_post_vifs [0.090706s] ... 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-012c242a-fcae-4e29-acf5-eeba38d3d5eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot [0.070231s] ... ok {2} ironic.tests.unit.api.test_acl.TestRBACScopedRequests.test_system_scoped_378_runbooks_runbook_id_patch_owner_admin [0.093981s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/a449e5cd-5053-4ad9-b13c-8937e62cc7f2 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3f2ca0c7-2aa9-4255-95e7-f248092726c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "a449e5cd-5053-4ad9-b13c-8937e62cc7f2", "created_at": "2026-04-12T07:47:51.613038+00:00", "updated_at": "2026-04-12T07:47:51.645086+00:00", "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "new_owner", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/a449e5cd-5053-4ad9-b13c-8937e62cc7f2", "rel": "self"}, {"href": "http://localhost/runbooks/a449e5cd-5053-4ad9-b13c-8937e62cc7f2", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_132_nodes_portgroups_get_observer [0.074798s] ... 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-9ab72786-ad09-42d5-9349-88f52d5f0eb4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_282_third_party_admin_cannot_post_vifs [0.076618s] ... 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-ae6e3a24-0c53-4428-b556-eab7fdf13e06 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso [0.066296s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_133_nodes_portgroups_detail_get_admin [0.064714s] ... 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-878463c2-1fc0-489f-b8ff-b0bbcc815802 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_379_runbooks_runbook_id_patch_owner_member [0.087213s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/52facf40-a091-402b-a974-4fdd2f498f3e WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-48768b0d-1275-4b84-bbc7-c9a5e3fd7e1e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "52facf40-a091-402b-a974-4fdd2f498f3e", "created_at": "2026-04-12T07:47:51.703237+00:00", "updated_at": "2026-04-12T07:47:51.733117+00:00", "name": "CUSTOM_DT1", "extra": {}, "public": false, "owner": "new_owner", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/52facf40-a091-402b-a974-4fdd2f498f3e", "rel": "self"}, {"href": "http://localhost/runbooks/52facf40-a091-402b-a974-4fdd2f498f3e", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_283_owner_admin_delete_vifs [0.074557s] ... 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-406a02a8-7b50-4f25-995c-00c0409b76d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_134_nodes_portgroups_detail_get_member [0.066463s] ... 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-991743ca-4581-49d4-b1af-37348d2f59c7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.test_acl.TestRBACScopedRequests.test_system_scoped_380_runbooks_runbook_id_patch_owner_reader [0.071818s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/a0001175-2151-450e-bb84-22c930df0361 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1adb0e6f-3820-4988-91f4-e8841e756d60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_rbac_legacy_135_nodes_portgroups_detail_get_observer [0.063190s] ... 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-d7ae858d-3b88-46c5-ab49-9d672cb6c644 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_284_owner_manager_delete_vifs [0.072158s] ... 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-52f77988-78d6-4f76-83c6-08a03c038966 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_381_runbooks_runbook_id_delete_admin [0.068561s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/824c0330-068f-4144-965a-9cbf16b79eef GOT Response: 204 No Content Openstack-Request-Id: req-3d3b874f-41f6-4c2d-9869-00d3a98adcbe 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.test_acl.TestRBACScoped.test_rbac_legacy_136_ports_get_admin [0.060259s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-872bc6a0-9eee-4698-9fbb-7820f8cb3f03 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_285_lessee_admin_can_delete_vifs [0.075998s] ... 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-7f13215f-2b06-43d3-9508-9b5c8405f1fa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_382_runbooks_runbook_id_delete_member [0.067712s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/f915bf34-a2dc-4936-b980-d2124e81daa6 GOT Response: 204 No Content Openstack-Request-Id: req-02cc43a5-c329-46bc-80ed-331a6924527b 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.test_acl.TestRBACScoped.test_rbac_legacy_137_ports_get_member [0.063800s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3d724590-48f4-4a10-91c7-29af82dd0c89 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_iso_boot [0.289481s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_286_lessee_manager_can_delete_vifs [0.076932s] ... 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-7a77d8cb-ad46-4e12-82e9-74484bba8e7c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_383_runbooks_runbook_id_delete_reader [0.070944s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/09e91fc4-3557-4e2e-9b65-167c8b63a6c6 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d818f7db-9ebc-4c94-9e7b-b708c74a4ec9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_138_ports_get_observer [0.065925s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a949613d-ec5c-4bd4-a70b-a8f34c6f7269 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_instance_ramdisk_boot_render_configdrive [0.065859s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_287_owner_member_can_delete_vifs [0.073572s] ... 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-606496a0-47f5-41bc-9fc0-59eb4c7ea67d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_acl.TestRBACScopedRequests.test_system_scoped_384_runbooks_post_project_admin [0.073742s] ... 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/e56e2b2e-3eea-4f9c-847b-09915527c415 Openstack-Request-Id: req-0d744186-b19c-4b7f-9d17-e5e6d120c904 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e56e2b2e-3eea-4f9c-847b-09915527c415", "created_at": "2026-04-12T07:47:52.089917+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/e56e2b2e-3eea-4f9c-847b-09915527c415", "rel": "self"}, {"href": "http://localhost/runbooks/e56e2b2e-3eea-4f9c-847b-09915527c415", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track [0.050127s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_139_ports_post_admin [0.068841s] ... 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-fe95ed8c-23ef-40f5-9830-df3ea74cdccf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_288_lessee_member_cannot_delete_vifs [0.071539s] ... 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-db980bbe-3703-406d-9e94-15fa356b6a18 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_acl.TestRBACScopedRequests.test_system_scoped_385_public_runbooks_post_admin [0.079837s] ... 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/d0532ab5-4a89-4006-a879-320990428634 Openstack-Request-Id: req-cad45049-0fed-4234-9051-4231831af26e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d0532ab5-4a89-4006-a879-320990428634", "created_at": "2026-04-12T07:47:52.170006+00:00", "updated_at": null, "name": "CUSTOM_NAME", "extra": {}, "public": true, "owner": null, "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/d0532ab5-4a89-4006-a879-320990428634", "rel": "self"}, {"href": "http://localhost/runbooks/d0532ab5-4a89-4006-a879-320990428634", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_fast_track_impossible [0.067368s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_140_ports_post_member [0.077496s] ... 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-d040af86-9937-4be7-874c-cd175cbd944e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_method.TestExpose.test_exception [0.027997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things/ouch WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-d1a48c63-0106-4828-9e59-6202037d39e3 {"error_message": "{\"faultcode\": \"Server\", \"faultstring\": \"ouch\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_289_third_party_admin_cannot_delete_vifs [0.072293s] ... 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-a2d7c893-185f-48ae-883c-e8683d8d3e85 X-Openstack-Ironic-Api-Maximum-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.test_method.TestExpose.test_expose [0.027297s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things WITH {'name': 'foo', 'flag': True} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e5461d8d-9b01-4ebd-a26a-ec04008bc55e {"foo": true} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_config [0.052795s] ... ok {2} ironic.tests.unit.api.test_method.TestExpose.test_expose_validation [0.025612s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things WITH {'name': 'foo', 'flag': 'truish'} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-7ef57cf2-7bba-430a-b953-96ef5f9f1894 {"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.TestRBACScoped.test_rbac_legacy_141_ports_post_observer [0.073977s] ... 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-61f9bed1-2d8e-4584-86df-92caea3672ff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.test_method.TestExpose.test_post_body [0.028440s] ... 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-7346b5ae-0f75-4dcc-97ef-2cebb5aabea0 {"three": "three", "four": "four", "five": "five"} {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_no_debug [0.052144s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_290_service_can_delete_vifs [0.069366s] ... 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-1954896f-f971-40d2-9005-171ce57b496a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.test_method.TestExpose.test_post_body_validation [0.029940s] ... 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-eee2d383-3cce-44a0-a6eb-c1f0ff49826e {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Schema error for body: 'fourrrr' is too long\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_142_ports_detail_get_admin [0.064190s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6d4add77-b2da-423b-8237-d51264a8d588 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_method.TestExpose.test_response_204 [0.027188s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things/no_content WITH {} GOT Response: 204 No Content Openstack-Request-Id: req-1919b35f-7d43-444f-b273-4482847672cc {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_floppy [0.062639s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_291_service_cannot_delete_other_nodes_vifs [0.068081s] ... 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-c9693448-3aa6-4363-b3f2-04d4a384c055 X-Openstack-Ironic-Api-Maximum-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.test_method.TestExpose.test_response_content [0.027731s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things/response_content WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-244fac96-c67c-4c09-ba6c-f71500a14ba2 "nothing" {2} ironic.tests.unit.api.test_method.TestExpose.test_response_custom_status [0.026149s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/things/response_custom_status WITH {} GOT Response: 202 Accepted Content-Type: application/json Openstack-Request-Id: req-fc7c5473-7523-418b-aff8-b7a6a79b066c "accepted" {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_143_ports_detail_get_member [0.064810s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-142255b5-91c7-4ed3-91e2-55ebe89f1f56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_params [0.067903s] ... ok {2} ironic.tests.unit.common.test_args.ValidatePatchSchemaTest.test_patch [0.022595s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_292_owner_readers_can_get_indicators [0.071304s] ... 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-26734d8c-87fb-4d97-bd54-dcd75f4f562b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_args.ValidatePatchSchemaTest.test_patch_validation_failed [0.034083s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_144_ports_detail_get_observer [0.068780s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6f57b067-4f3c-44e2-a35c-58f05fc853a1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_args.ValidateTypesTest.test_types [0.020762s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_prepare_ramdisk_with_usb [0.066728s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_293_lesse_readers_can_get_indicators [0.069085s] ... 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-95e880e0-cdf5-474d-81f0-03c2d097be29 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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) {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_boot_iso [0.037530s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_145_ports_port_id_get_admin [0.066749s] ... 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-0711faa9-bc27-4cac-9f98-ae4812a9e875 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_correct_vendor [0.039092s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: line 1: mkisofs: command not found {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_bad_iso_qcow2 ... SKIPPED: mkisofs not installed {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection [0.036879s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_146_ports_port_id_get_member [0.068033s] ... 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-a6fa54ad-64ee-4be7-bb56-2afd23292bb9 X-Openstack-Ironic-Api-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}"} /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) {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_inspection_missing [0.035015s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_from_file_reads_minimum [0.072799s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_kernel_ramdisk [0.036663s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_147_ports_port_id_get_observer [0.069590s] ... 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-f3d3573b-585e-4f2e-a35b-2bc6fb6f4d4a X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_local [0.036252s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootTestCase.test_validate_missing [0.035484s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_148_ports_port_id_patch_admin [0.072912s] ... 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-c76abc68-9b55-4aaf-abf3-0b84318af8e4 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_294_third_party_admin_cannot_get_indicators [0.261956s] ... 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-2eb7a81e-00a5-41fa-bf9b-1d1b9bea52ed X-Openstack-Ironic-Api-Maximum-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_done [0.050591s] ... ok {3} 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. {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_149_ports_port_id_patch_member [0.072905s] ... 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-968bee00-4e9e-4636-9de1-b160f3aa38fb X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_fail [0.054107s] ... ok {3} 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. {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_150_ports_port_id_patch_observer [0.070726s] ... 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-ad92065f-c926-4133-988c-22a5961d7f8f X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_in_progress [0.049811s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) /bin/sh: line 1: mkisofs: command not found {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_iso_9660 ... SKIPPED: mkisofs not installed {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_redfish_conn_error [0.047256s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_297_owner_member_can_set_indicator [0.068005s] ... 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-ab77359c-81b3-4222-a10e-c01c618e4b30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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) /bin/sh: line 1: mkisofs: command not found {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_iso_udf ... SKIPPED: mkisofs not installed {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_151_ports_port_id_delete_admin [0.070773s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9d5f3d69-ef1c-458b-b848-094e984fcf7e X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_still_waiting [0.051992s] ... 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) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_298_lessee_member_cannot_set_indicator [0.073231s] ... 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-3bd3778c-0cb4-49a1-9013-791d2702f0b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_152_ports_port_id_delete_member [0.068879s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-57c0520b-ec5f-45aa-9fe9-9c6f976be91c X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_task_monitor_not_found [0.050839s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_299_third_party_admin_cannot_set_indicator [0.071407s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PUT /v1/nodes/25a37ecc-9425-40c2-bfef-06c532e48c6a/management/indicators/component/magic_light WITH None GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8f65d9b5-f9dc-4594-9d42-e9e5f07a2cdf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 25a37ecc-9425-40c2-bfef-06c532e48c6a could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__check_node_firmware_update_wait_elapsed [0.047444s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_153_ports_port_id_delete_observer [0.068439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-42b34566-6d17-4480-9f36-183f0c96de61 X-Openstack-Ironic-Api-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}"} /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) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_last_update [0.052387s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_300_owner_reader_can_list_portgroups [0.070439s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9fdee3c3-cc66-4262-8fec-34eaa5cc8709 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": "6fc1c190-afc5-42c1-86fa-14e7d3c525d5", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6fc1c190-afc5-42c1-86fa-14e7d3c525d5", "rel": "self"}, {"href": "http://localhost/portgroups/6fc1c190-afc5-42c1-86fa-14e7d3c525d5", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_154_nodes_ports_get_admin [0.067310s] ... 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-3c3c45d4-45c0-4e43-ba6e-80c9b04cf155 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_more_updates [0.049888s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_301_owner_service_can_list_portgroups [0.066591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-734ee810-25f3-4ac9-911c-b736dcd560e9 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": "9748aa25-74f7-4d68-8cea-16d6b4626b3f", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/9748aa25-74f7-4d68-8cea-16d6b4626b3f", "rel": "self"}, {"href": "http://localhost/portgroups/9748aa25-74f7-4d68-8cea-16d6b4626b3f", "rel": "bookmark"}]}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_155_nodes_ports_get_member [0.067677s] ... 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-ef84a3ab-6a3c-4f5f-b61b-60db90d1281b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__continue_firmware_updates_wait [0.050526s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_data_drive_simple_storage [0.036700s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_302_lessee_reader_can_list_portgroups [0.070429s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-910aca61-9404-4c07-a706-8464db81eb99 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": "17a45efb-1510-453f-9300-71f50d07b68b", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/17a45efb-1510-453f-9300-71f50d07b68b", "rel": "self"}, {"href": "http://localhost/portgroups/17a45efb-1510-453f-9300-71f50d07b68b", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_156_nodes_ports_get_observer [0.066373s] ... 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-46f4e5b0-5761-4935-befb-ea217ce20ef4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_data_drive_storage [0.041450s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_fan [0.034386s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_303_third_party_admin_cannot_list_portgroups [0.065347s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f6b46281-bad2-497f-b31f-24b338f76ce8 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.api.test_acl.TestRBACScoped.test_rbac_legacy_157_nodes_ports_detail_get_admin [0.064559s] ... 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-e2afa9aa-46e5-4aa5-802f-a39c8fc6821f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_format_inspector.TestFormatInspectors.test_qcow2 [0.417490s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_power [0.039498s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qcow2_feature_flag_checks [0.020901s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qcow2_invalid [0.019017s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__get_sensors_temperatures [0.034590s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_304_owner_reader_can_read_portgroup [0.076198s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ab6a181c-d9b7-4702-af8e-2aa98916899c 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": "2026-04-12T07:47:53.406379+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.api.test_acl.TestRBACScoped.test_rbac_legacy_158_nodes_ports_detail_get_member [0.067161s] ... 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-e6ec116e-df54-4992-a860-c374141ad5d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed [0.037080s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_failed_no_firmware_upd [0.032724s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_159_nodes_ports_detail_get_observer [0.067648s] ... 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-c078001d-ab99-4475-aa8f-4ffbe2c30e4b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_305_lessee_reader_can_read_portgroup [0.077787s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/cdf9d96b-9a33-4f0f-9fdc-fd6305248258 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4d73d0da-32d8-4bcc-8c85-080b7a207058 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "cdf9d96b-9a33-4f0f-9fdc-fd6305248258", "created_at": "2026-04-12T07:47:53.494870+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/cdf9d96b-9a33-4f0f-9fdc-fd6305248258", "rel": "self"}, {"href": "http://localhost/portgroups/cdf9d96b-9a33-4f0f-9fdc-fd6305248258", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/cdf9d96b-9a33-4f0f-9fdc-fd6305248258/ports", "rel": "self"}, {"href": "http://localhost/portgroups/cdf9d96b-9a33-4f0f-9fdc-fd6305248258/ports", "rel": "bookmark"}]} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status [0.036547s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__query_firmware_update_status_no_firmware_upd [0.036316s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_306_third_party_admin_cannot_read_portgroup [0.072841s] ... 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-f801101a-6b41-4414-af8b-b62d003b76d4 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_error [0.030424s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qcow2_safety_checks [0.190112s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_https [0.027067s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_qed_always_unsafe ... SKIPPED: qemu-img not installed or does not support qed format {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test__stage_firmware_file_swift [0.030941s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_307_owner_admin_can_add_portgroup [0.078165s] ... 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/0288d777-55ec-41d5-b285-75289173070e Openstack-Request-Id: req-8e1296c5-fcc3-415c-8cfd-f3190f3719a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0288d777-55ec-41d5-b285-75289173070e", "created_at": "2026-04-12T07:47:53.671700+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/0288d777-55ec-41d5-b285-75289173070e", "rel": "self"}, {"href": "http://localhost/portgroups/0288d777-55ec-41d5-b285-75289173070e", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/0288d777-55ec-41d5-b285-75289173070e/ports", "rel": "self"}, {"href": "http://localhost/portgroups/0288d777-55ec-41d5-b285-75289173070e/ports", "rel": "bookmark"}]} /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) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_attach_virtual_media [0.040999s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_308_owner_service_can_add_portgroup [0.076297s] ... 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/578d1e25-fbca-48bc-bf89-f0a98381964a Openstack-Request-Id: req-a773f79d-d8c5-4661-a0c2-f449bcb1b735 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "578d1e25-fbca-48bc-bf89-f0a98381964a", "created_at": "2026-04-12T07:47:53.748837+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/578d1e25-fbca-48bc-bf89-f0a98381964a", "rel": "self"}, {"href": "http://localhost/portgroups/578d1e25-fbca-48bc-bf89-f0a98381964a", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/578d1e25-fbca-48bc-bf89-f0a98381964a/ports", "rel": "self"}, {"href": "http://localhost/portgroups/578d1e25-fbca-48bc-bf89-f0a98381964a/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot [0.040669s] ... 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) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_clear_secure_boot_not_implemented [0.036883s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_160_portgroups_ports_get_admin [0.283066s] ... 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-654566aa-6223-4acf-8b75-b61d2fc60a82 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_309_owner_manager_can_add_portgroup [0.077883s] ... 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/75258cc6-b42f-4abe-bc13-a39e406fb800 Openstack-Request-Id: req-4d4c8059-77b0-41bc-aeda-4ce6ff7a72be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "75258cc6-b42f-4abe-bc13-a39e406fb800", "created_at": "2026-04-12T07:47:53.827493+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/75258cc6-b42f-4abe-bc13-a39e406fb800", "rel": "self"}, {"href": "http://localhost/portgroups/75258cc6-b42f-4abe-bc13-a39e406fb800", "rel": "bookmark"}], "ports": [{"href": "http://localhost/v1/portgroups/75258cc6-b42f-4abe-bc13-a39e406fb800/ports", "rel": "self"}, {"href": "http://localhost/portgroups/75258cc6-b42f-4abe-bc13-a39e406fb800/ports", "rel": "bookmark"}]} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detach_virtual_media [0.044467s] ... 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) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_161_portgroups_ports_get_member [0.070508s] ... 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-452cffd4-55b4-4f31-8212-17ab59026ec7 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detach_virtual_media_all [0.041202s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_310_owner_member_cannot_add_portgroup [0.070770s] ... 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-38900719-d2af-45f7-a251-b5edbc9be568 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_detect_vendor [0.035098s] ... 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) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_162_portgroups_ports_get_observer [0.069570s] ... 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-30350ba0-a1b0-4c04-9def-b55a1814da91 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_device [0.035657s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_311_lessee_admin_cannot_add_portgroup [0.069666s] ... 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-84996faa-59e5-45a0-9f85-7cb3f3dc308f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_boot_mode [0.034303s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vdi [0.334821s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_163_portgroups_ports_detail_get_admin [0.069265s] ... 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-7d94d9d4-ec94-4aa7-91c6-94ef50311a44 X-Openstack-Ironic-Api-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.common.test_format_inspector.TestFormatInspectors.test_vdi_invalid [0.020796s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_indicator_state [0.045672s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_312_lessee_manager_cannot_add_portgroup [0.070172s] ... 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-50f0191c-99e4-4050-9bef-d9ed16981375 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /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) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_indicator_state_disk [0.042193s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_164_portgroups_ports_detail_get_member [0.069038s] ... 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-373d979d-e1ee-4427-a3fc-697d87373556 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_missing_attr [0.037066s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_313_lessee_member_cannot_add_portgroup [0.070365s] ... 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-d0e4a285-39aa-4e8e-b9f1-7e043675ce3c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /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) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_165_portgroups_ports_detail_get_observer [0.069073s] ... 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-b03cf8bd-f128-4447-bf0b-bcb6022c229a X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_314_third_party_admin_cannot_add_portgroup [0.072331s] ... 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-50777d6d-91a7-4f11-8f92-f63554010c56 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_166_volume_get_admin [0.061154s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5b9eabb6-9922-4f7b-8035-e69c904cf9f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /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.TestRBACProjectScoped.test_project_scoped_315_owner_admin_can_modify_portgroup [0.079091s] ... 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-3ce6a0f5-de53-4001-9a53-a12fa4a29528 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_167_volume_get_member [0.061230s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-94e1da56-3de9-4d98-add1-737689455774 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /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) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_316_owner_manager_can_modify_portgroup [0.076080s] ... 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-0b58cd1f-1314-4fff-9ef5-f36441b25d00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_168_volume_get_observer [0.062486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a458b9be-d9f8-4292-9a4f-de56ca19960e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_no_ports_found [0.248330s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vhd [0.344678s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vhd_invalid [0.021890s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_mac_addresses_success [0.040467s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vhdx_invalid [0.020763s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_169_volume_connectors_get_admin [0.064736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a3dce2f6-9862-416d-a1f3-b7e3580938f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_317_owner_member_cannot_modify_portgroup [0.075104s] ... 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-0cbaf109-221d-4942-99ed-16cf28ab1307 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_properties [0.037090s] ... 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) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_170_volume_connectors_get_member [0.061654s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-83c8f403-a15c-488e-962a-f8bfe7e82c0d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state [0.039567s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_318_lessee_admin_cannot_modify_portgroup [0.072155s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/98e5787d-fe72-4441-94bc-2463265bc860 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5b8c85e9-d69f-4341-9830-102ab67ffc38 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_secure_boot_state_not_implemented [0.035103s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_171_volume_connectors_get_observer [0.062859s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6693b670-b488-429e-8ade-735f1971c3aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_sensors_data [0.038702s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_319_lessee_manager_cannot_modify_portgroup [0.070386s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/5ce6852b-fd21-45d1-88df-e528af0ca6aa WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9e42822c-f832-492b-af8d-7f83139b0154 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_devices [0.038005s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_172_volume_connectors_post_admin [0.070634s] ... 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-e1955557-72d6-4766-9dd0-7204f4f87263 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_boot_modes [0.034596s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_320_lessee_member_cannot_modify_portgroup [0.074486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/8b1b9a16-9086-463f-a1c0-7a69bdde4266 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-abcde712-8fbe-4cc5-9439-8e7aa42576e9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_supported_indicators [0.037121s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_173_volume_connectors_post_member [0.070108s] ... 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-1c3d9118-6069-4191-b02a-7a71479150c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_get_virtual_media [0.041053s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_321_third_party_admin_cannot_modify_portgroup [0.079708s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/portgroups/3be2641a-0b2b-4caf-8fd3-858f3eb5ea72 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fb555e7f-fb47-40b9-b1c3-242b74419c81 X-Openstack-Ironic-Api-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 3be2641a-0b2b-4caf-8fd3-858f3eb5ea72 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi [0.040517s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_174_volume_connectors_post_observer [0.069078s] ... 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-f45c7649-32c6-49ec-a8a9-a5fee92f6707 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_acl.TestRBACProjectScoped.test_project_scoped_322_owner_admin_can_delete_portgroup [0.076817s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-ec86412d-7e20-41e2-bc7f-0a94bb588e0f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_inject_nmi_fail [0.067930s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_175_volume_volume_connector_id_get_admin [0.076330s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/df960e32-f5b1-49b6-9043-2f49b74938c0 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-eab7d527-a9c1-4253-bba0-3afd23097e2d X-Openstack-Ironic-Api-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 df960e32-f5b1-49b6-9043-2f49b74938c0 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default [0.041113s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_323_owner_manager_can_delete_portgroup [0.079573s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-97ef12af-398e-4a20-9fe9-ed3108c2f635 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_format_inspector.TestFormatInspectors.test_vmdk [0.476802s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_reset_secure_boot_to_default_not_implemented [0.038456s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_176_volume_volume_connector_id_get_member [0.069388s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/9d4db557-0b05-4c3e-850e-d32f7aed8856 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5d07849c-7035-42fc-ba9b-83e6016d82dc X-Openstack-Ironic-Api-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 9d4db557-0b05-4c3e-850e-d32f7aed8856 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device [0.040969s] ... ok 5+0 records in 5+0 records out 5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.020714 s, 253 MB/s {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_324_owner_member_cannot_delete_portgroup [0.073286s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c0c3e087-fffd-44a2-b4aa-1b02404c1610 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_177_volume_volume_connector_id_get_observer [0.070415s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/ca36a3fb-dcb2-4b0f-95b8-83c80dfc48b0 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2e07a287-8016-4b36-9bab-d47d7608eb6b X-Openstack-Ironic-Api-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 ca36a3fb-dcb2-4b0f-95b8-83c80dfc48b0 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_compat [0.043305s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_325_owner_service_can_delete_portgroup [0.070955s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/b16efcf3-2990-41a1-bc1d-5e2c16f3d5fc GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c8e11edf-1e84-4c36-84e4-7fe235021eff X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_failure [0.050403s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_178_volume_volume_connector_id_patch_admin [0.072602s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/e39ea86d-dd05-4cf7-b02e-37076568f95a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4ea1e5fa-66a5-4370-9cb1-07052b15af66 X-Openstack-Ironic-Api-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 e39ea86d-dd05-4cf7-b02e-37076568f95a could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_restore_boot_device_noop [0.046651s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_326_lessee_admin_cannot_delete_portgroup [0.068763s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/7e085238-fc59-4715-aa8b-8cb78beb7c54 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0469f2da-ddc2-4e09-bd27-eafbeeeb42d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_179_volume_volume_connector_id_patch_member [0.081736s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/e95f44fe-48f1-4ab1-87bd-4bb3750edede WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f9c16dd8-bc5a-49b8-8211-008fa5dfe3ed X-Openstack-Ironic-Api-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 e95f44fe-48f1-4ab1-87bd-4bb3750edede could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device [0.081587s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_327_lessee_manager_cannot_delete_portgroup [0.071531s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/d18f61e8-3c97-4de2-a936-b9174e279515 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-653d6bfa-3d26-4eb3-9df2-caab942670be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_180_volume_volume_connector_id_patch_observer [0.071122s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/76bd2a1f-9b78-4e16-a770-82bb908b278a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7593a1dd-6b0e-4424-8d6c-671ed1f01b44 X-Openstack-Ironic-Api-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 76bd2a1f-9b78-4e16-a770-82bb908b278a could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail [0.079234s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_328_lessee_member_cannot_delete_portgroup [0.079224s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/c47f393b-c68f-478f-93d5-83da27e28b13 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-28ddb0e9-aada-4490-900e-e61868882733 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_181_volume_volume_connector_id_delete_admin [0.071884s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/68e284ec-f104-47de-bf38-c8165fa29ea5 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7a1a5bb1-8bc8-400b-b3d1-1470b3ba0413 X-Openstack-Ironic-Api-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 68e284ec-f104-47de-bf38-c8165fa29ea5 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_fail_no_change [0.054911s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_182_volume_volume_connector_id_delete_member [0.069520s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/6ab33686-f59a-4751-acd2-eab549677892 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0e3ac305-3741-4b78-9610-bd7aa2771c7e X-Openstack-Ironic-Api-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 6ab33686-f59a-4751-acd2-eab549677892 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_http_boot [0.055581s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_183_volume_volume_connector_id_delete_observer [0.069312s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/596efeb2-b454-42a8-a8d7-dbd4383d2e3f GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4049758b-d9ed-4727-b51b-790b9230e6ed X-Openstack-Ironic-Api-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 596efeb2-b454-42a8-a8d7-dbd4383d2e3f could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistence_fallback [0.079008s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency [0.052286s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_184_volume_targets_get_admin [0.070204s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-26f24e6f-4552-4218-928a-243eecf52d6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_329_third_party_admin_cannot_delete_portgroup [0.281161s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/206c863f-4e43-433d-9500-cb1181cef8f7 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5ac70ae3-0ca5-4f36-a8fd-6e24277a8f85 X-Openstack-Ironic-Api-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 206c863f-4e43-433d-9500-cb1181cef8f7 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_no_change [0.054231s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_185_volume_targets_get_member [0.063119s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b1002965-0534-4810-9931-bb635a525e9a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_330_service_cannot_delete_portgroup [0.072516s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/9ae30661-e251-4afe-bd58-6f037d9f9dd2 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cb9191ac-866c-48af-a4f2-810c15655741 X-Openstack-Ironic-Api-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 9ae30661-e251-4afe-bd58-6f037d9f9dd2 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_device_persistency_vendor [0.077549s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_186_volume_targets_get_observer [0.063688s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a04020ef-96ad-4faf-8443-8e9608d1d161 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode [0.045735s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_331_owner_reader_can_get_node_portgroups [0.081991s] ... 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-51cdef68-6831-49c8-9188-cf31c9414593 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"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_187_volume_targets_post_admin [0.074526s] ... 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-6712f3a9-6b50-4eeb-854b-3f23a62904b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_fail [0.069803s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_332_lessee_reader_can_get_node_porgtroups [0.070856s] ... 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-23012a67-c4dc-4a6a-b7a0-baff1b17ba51 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": "6c098146-9b39-45ec-b327-5660b1460638", "address": "52:54:00:cf:2d:31", "name": "fooname", "links": [{"href": "http://localhost/v1/portgroups/6c098146-9b39-45ec-b327-5660b1460638", "rel": "self"}, {"href": "http://localhost/portgroups/6c098146-9b39-45ec-b327-5660b1460638", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_188_volume_targets_post_member [0.070472s] ... 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-177f0dd7-f0b4-42fa-aae5-b6b6b77d3c87 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_boot_mode_unsupported [0.069339s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_333_third_party_admin_cannot_get_portgroups [0.065394s] ... 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-b0c5c78a-bfa0-4929-9e87-903633429746 X-Openstack-Ironic-Api-Maximum-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.api.test_acl.TestRBACScoped.test_rbac_legacy_189_volume_targets_post_observer [0.071007s] ... 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-2030b237-5f09-406a-99c0-1969144bf599 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_indicator_state [0.044610s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_334_service_cannot_get_portgroups [0.067527s] ... 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-b7a6a80d-50b8-4e1e-a7a4-902e1f1ec5ca X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_indicator_state_disk [0.043226s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_190_volume_volume_target_id_get_admin [0.069079s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/ecabd337-af60-49af-a3e9-92189f197c86 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d53094f5-3847-4df2-ac3e-c62610793110 X-Openstack-Ironic-Api-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 ecabd337-af60-49af-a3e9-92189f197c86 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state [0.045775s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_335_owner_reader_can_list_ports [0.067117s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-cf93eddb-8a84-41ef-b3b4-48bf00f91bd6 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": "43177b1e-d6ac-43e3-b644-06395d6b70eb", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/43177b1e-d6ac-43e3-b644-06395d6b70eb", "rel": "self"}, {"href": "http://localhost/ports/43177b1e-d6ac-43e3-b644-06395d6b70eb", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_191_volume_volume_target_id_get_member [0.067312s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/caca5c14-eaa2-4bce-8f3c-c0c38919eba0 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c85a57bd-946d-4ff7-be04-fb5f99a6689d X-Openstack-Ironic-Api-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 caca5c14-eaa2-4bce-8f3c-c0c38919eba0 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_fails [0.044202s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_336_owner_service_can_list_ports [0.067231s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-dd360545-a988-4f37-9d81-b325cf467ffb 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": "65ddc1c8-3542-41a3-8057-cf376f67cd13", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/65ddc1c8-3542-41a3-8057-cf376f67cd13", "rel": "self"}, {"href": "http://localhost/ports/65ddc1c8-3542-41a3-8057-cf376f67cd13", "rel": "bookmark"}]}]} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_incorrect [0.047213s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_192_volume_volume_target_id_get_observer [0.067563s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/af237e1c-623c-448a-8021-1920c93c96bf WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e33e95fd-1234-47b6-aba0-515ce5b4cf4c X-Openstack-Ironic-Api-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 af237e1c-623c-448a-8021-1920c93c96bf could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_no_change [0.043177s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_337_lessee_reader_can_list_ports [0.068114s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-43c1835b-995a-4433-96e7-cf6ec30cd977 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": "9d494cf5-3a64-4835-9198-b7827fa4f020", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/9d494cf5-3a64-4835-9198-b7827fa4f020", "rel": "self"}, {"href": "http://localhost/ports/9d494cf5-3a64-4835-9198-b7827fa4f020", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_193_volume_volume_target_id_patch_admin [0.069234s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/ccff2cf1-54f1-4b36-b388-3a8daf743755 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8795433c-0fcf-4ecc-bfc5-07ff748e28fa X-Openstack-Ironic-Api-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 ccff2cf1-54f1-4b36-b388-3a8daf743755 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_boot_mode_unknown [0.048839s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_338_third_party_admin_cannot_list_ports [0.066571s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b8afb418-6d39-428e-b77f-d51cbf5418b0 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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_set_secure_boot_state_not_implemented [0.053260s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_194_volume_volume_target_id_patch_member [0.070655s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/0c0e1580-0326-4a5e-9be9-3b0524f9e898 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-84e696ce-4a15-461c-beff-fcb979bfc61c X-Openstack-Ironic-Api-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 0c0e1580-0326-4a5e-9be9-3b0524f9e898 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_339_owner_reader_can_read_port [0.070727s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8923659d-bcf4-4ba9-a149-d809c0ca8f14 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": "2026-04-12T07:47:56.192059+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} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_195_volume_volume_target_id_patch_observer [0.069118s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/4f95338b-9700-45a3-8cf8-bf7cc689a684 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e81e8874-e209-403c-b9dd-ae09185cc034 X-Openstack-Ironic-Api-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 4f95338b-9700-45a3-8cf8-bf7cc689a684 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_340_owner_service_can_read_port [0.067250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-558dbf07-f9c0-4292-83c6-b1755bb1d679 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": "2026-04-12T07:47:56.262109+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} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_196_volume_volume_target_id_delete_admin [0.068805s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/6660cc75-dc69-4023-980a-dce02c689ada GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ca27695b-b4ba-4e62-a3f8-cfb1d25ba12f X-Openstack-Ironic-Api-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 6660cc75-dc69-4023-980a-dce02c689ada could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_341_lessee_reader_can_read_port [0.073534s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/47cf6e24-2dde-4a21-8f97-66bf49b31221 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-eeb73dfa-fab2-4d38-a571-a7ff5681bc68 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "47cf6e24-2dde-4a21-8f97-66bf49b31221", "created_at": "2026-04-12T07:47:56.341665+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/47cf6e24-2dde-4a21-8f97-66bf49b31221", "rel": "self"}, {"href": "http://localhost/ports/47cf6e24-2dde-4a21-8f97-66bf49b31221", "rel": "bookmark"}], "portgroup_uuid": null} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_342_third_party_admin_cannot_read_port [0.067657s] ... 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-0c972e68-75d3-4ed3-a84c-c43184206a96 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware [0.274442s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_invalid_args [0.041248s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_343_owner_admin_can_add_ports [0.072015s] ... 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-129a3144-0f5c-43c4-b267-d562453e160d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage [0.045281s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_344_owner_manager_can_add_ports [0.072664s] ... 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-ac63bb1f-5898-4751-807d-a3366eb5e1cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_update_firmware_stage_both [0.052833s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_197_volume_volume_target_id_delete_member [0.274259s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/32267826-0b50-46d7-9139-a4e24cd6c240 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-45e448a6-ade7-4480-ac71-4e3d5a6fc4da X-Openstack-Ironic-Api-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 32267826-0b50-46d7-9139-a4e24cd6c240 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_validate [0.033358s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_345_owner_admin_cannot_add_ports_to_other_nodes [0.074323s] ... 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-1b15d60b-5bed-43d5-96c7-bc8d80f52fc7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_boot_mode [0.043643s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_198_volume_volume_target_id_delete_observer [0.071974s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/61d4d18a-c4cc-4634-a79d-c56ceca46124 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1dce978b-bb56-4102-a575-d5b6711c3a5b X-Openstack-Ironic-Api-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 61d4d18a-c4cc-4634-a79d-c56ceca46124 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_boot_mode_immediate [0.043114s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_346_owner_manager_cannot_add_ports_to_other_nodes [0.082315s] ... 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-151e9c28-90ae-4972-8568-ca2d40ca197b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_199_nodes_volume_get_admin [0.069515s] ... 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-ce37f065-bc65-4f8e-82fc-e4a81a0f6cbd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_secure_boot [0.053753s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_secure_boot_immediate [0.040656s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_200_nodes_volume_get_member [0.062315s] ... 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-7d5ef370-24ce-44c6-8684-4c9c5890d291 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_347_owner_service_cannot_add_ports_to_other_nodes [0.079304s] ... 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-466b43a8-5249-471a-ace4-616916014728 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_secure_boot_no_wait [0.044827s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_201_nodes_volume_get_observer [0.061667s] ... 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-ea3f00e0-0244-46f3-9573-417f53d50533 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_348_owner_member_cannot_add_port [0.074740s] ... 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-aac32ba3-8da7-4b55-88f2-1ba98d662c59 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_202_nodes_volume_connectors_get_admin [0.067570s] ... 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-1344e268-89b4-4bb8-b815-2c5eb3c061e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_349_lessee_admin_cannot_add_port [0.075005s] ... 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-d9b57060-d4b2-4310-89f4-e7b957c668cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_203_nodes_volume_connectors_get_member [0.066135s] ... 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-be1792b5-c4aa-4804-a7ed-141d88bf775f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit [2.132813s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_350_lessee_manager_cannot_add_port [0.078419s] ... 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-1ccdb70d-77d4-450f-9f25-4f569b1571e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_204_nodes_volume_connectors_get_observer [0.085370s] ... 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-2e45ae5f-5420-4caf-ada3-59eeb8b97b0d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} 5+0 records in 5+0 records out 5242880 bytes (5.2 MB, 5.0 MiB) copied, 0.0356562 s, 147 MB/s {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_351_lessee_member_cannot_add_port [0.070883s] ... 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-341a85d6-2bae-43ba-b631-e18973af87bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_205_nodes_volume_targets_get_admin [0.066428s] ... 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-f2a08f94-b166-4c4b-a02f-f06b85b11e04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_352_third_party_admin_cannot_add_port [0.069082s] ... 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-f6d07367-fbd0-4a59-a8f1-3e118c870b12 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_206_nodes_volume_targets_get_member [0.068025s] ... 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-e5b5874f-4c95-4fc9-a05e-8b5ea583cc21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_353_service_can_add_port [0.069682s] ... 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-3d775f85-cddb-42b8-80d0-8812135db9fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_207_nodes_volume_targets_get_observer [0.068117s] ... 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-08be1adc-6785-43fb-8bf3-1031e328864b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_354_service_cannot_add_ports_to_other_project [0.072939s] ... 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-515c879c-55cc-49e2-84c6-0b872142eeea X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_208_drivers_get_admin [0.062683s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-489edd3b-9a55-45e8-8cff-b6cefbd0b35b X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_355_owner_admin_can_modify_port [0.086254s] ... 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-39832650-61cb-4af6-a1ff-7de5df0e7980 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_209_drivers_get_member [0.060802s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-463d5b51-c12e-4f5e-b920-ff80326534bd X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_rbac_legacy_210_drivers_get_observer [0.059275s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-fb7adaf4-7cb6-4abd-af9e-5a2c928b514f X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_356_owner_manager_can_modify_port [0.085440s] ... 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-5486de83-9237-46e4-8771-fea3c08d4d08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_211_drivers_driver_name_get_admin [0.057948s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-29237c4a-2601-4b8e-a45c-45722074a3ea X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_357_owner_service_can_modify_port [0.086389s] ... 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-7dcdf54a-45ee-4bb5-86ce-87a55c371c84 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_212_drivers_driver_name_get_member [0.068686s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-7a1bf3ce-59c0-4e1e-a54d-6b53be494625 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_358_owner_member_cannot_modify_port [0.069873s] ... 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-b6045864-7e1a-4c0b-9944-3850a69911b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_213_drivers_driver_name_get_observer [0.062262s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-fe4d8cf2-ba72-4ecf-a781-71da61e49831 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_359_lessee_admin_cannot_modify_port [0.071180s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/637d3e9e-dd5f-4c8a-9d8d-f3b0dd92267f WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c6096b66-d56e-4579-9e8f-2ab5e5180a35 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_214_drivers_properties_get_admin [0.062382s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-99efa12f-e541-4d76-b0b7-5d2ce1bbca55 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_360_lessee_manager_cannot_modify_port [0.069193s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/fb5eac1f-159b-4d7a-90e3-c57485b86e2b WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-66939fca-1980-4114-8d13-4bad8fe735e6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_215_drivers_properties_get_member [0.062432s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-3b6a8c92-2b69-417c-93e5-33ca069243b8 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_rbac_legacy_216_drivers_properties_get_observer [0.060412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-a62bc859-c7e7-495a-9e0f-83812afe65c0 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_361_lessee_member_cannot_modify_port [0.068401s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/23c15a86-6f99-4bed-92a4-a47938ce6bfa WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7efeb6fb-a1e9-43ad-99c1-e89cd9dc0df0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_management.RedfishManagementTestCase.test_wait_for_secure_boot_timeout [1.052244s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_217_drivers_raid_logical_disk_properties_get_admin [0.061974s] ... 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-1726199b-1dbe-4aed-a1ef-89b81ba0034d X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_power_state [0.063301s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_218_drivers_raid_logical_disk_properties_get_member [0.062274s] ... 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-ca8f2e94-cba0-41a0-a95f-dfd59dfe95c0 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_properties [0.036835s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_get_supported_power_states [0.032735s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_219_drivers_raid_logical_disk_properties_get_observer [0.060818s] ... 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-72289e39-1ac0-4842-b3fc-278bd7b4aabc X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail [0.063390s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_220_drivers_vendor_passthru_methods_get_admin [0.060559s] ... 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-e0953e85-d3c9-4207-8575-35f95416810d X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_362_third_party_admin_cannot_modify_port [0.257148s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/ports/4391b622-79e0-4343-94f3-c3923393c2a0 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4699eb77-f502-4f00-adc7-d2ece1a78797 X-Openstack-Ironic-Api-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 4391b622-79e0-4343-94f3-c3923393c2a0 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_fail_on_power_on [0.067551s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_221_drivers_vendor_passthru_methods_get_member [0.062020s] ... 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-70116b7e-ed5b-427e-b057-64d27c79ad65 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_363_owner_admin_can_delete_port [0.067062s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-e0a769f3-c9b8-4f78-9b37-2289ff5eeff6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_off [0.046182s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_222_drivers_vendor_passthru_methods_get_observer [0.062246s] ... 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-190762de-7c9f-47b3-aad5-544028249ad6 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_from_power_on [0.042749s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_364_owner_manager_can_delete_port [0.067305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-88cf5670-141a-4f4f-b899-6150057bd5cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_reboot_not_reached [0.046419s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_223_drivers_vendor_passthru_get_admin [0.062457s] ... 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-872aa512-178d-432d-bed9-28fcc056fd90 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_365_owner_service_can_delete_port [0.069880s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-c731f101-dcc5-48ec-9dbe-d3c3759b3c73 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state [0.045354s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_224_drivers_vendor_passthru_get_member [0.060155s] ... 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-3339b66f-db8a-4721-96a3-8a4b6bf0058b X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_366_owner_member_cannot_delete_port [0.068412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/ebe30f19-358d-41e1-8d28-fd7357a0164c GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e82748aa-0fcf-462b-8284-bed8da042c2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_conflict_error_handling [0.074805s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_225_drivers_vendor_passthru_get_observer [0.062168s] ... 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-559ef94e-8896-4699-8f83-997e5e36975a X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_367_lessee_admin_cannot_delete_port [0.066097s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/db97d800-8ec5-4858-a9e5-200cd1847cb9 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6cd028fa-490c-4bad-9940-dadf96410460 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_conflict_error_refresh_fails [0.044616s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_226_drivers_vendor_passthru_post_admin [0.063988s] ... 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-f0269b75-a56a-4f95-b420-cb4ab207da25 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_368_lessee_manager_cannot_delete_port [0.066173s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/6ca00549-de0e-45bd-a587-ea13a7d7e5a5 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6055fb67-f9cc-455a-ac7e-7e8c6fce6e58 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_fail [0.064849s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_227_drivers_vendor_passthru_post_member [0.061931s] ... 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-6cd6723b-074e-430b-8756-a702e4b4c8f2 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_not_reached [0.049189s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_369_lessee_member_cannot_delete_port [0.070839s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/8c633669-27bc-4fb3-851c-b6d67e3b26ca GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-58342e45-58c4-4e6d-86f5-821ac45ab1d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_228_drivers_vendor_passthru_post_observer [0.062052s] ... 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-e9b6cf36-cdb9-46ec-bf8b-13ad11c9259a X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_370_third_party_admin_cannot_delete_port [0.068246s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/830ec0b6-9bb7-4c67-b731-1ec67d00f7be GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c5c96d16-29eb-4b76-94ba-d7b3b736aa19 X-Openstack-Ironic-Api-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 830ec0b6-9bb7-4c67-b731-1ec67d00f7be could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_229_drivers_vendor_passthru_put_admin [0.060172s] ... 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-196d9e75-1d5e-4569-95b3-bb16acdaba06 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_set_power_state_race_condition_handling [0.106606s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_power.RedfishPowerTestCase.test_validate [0.033218s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_371_owner_reader_can_get_node_ports [0.072616s] ... 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-b99f2da9-a32b-4686-b4a4-6ea8fdda03ac 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"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_230_drivers_vendor_passthru_put_member [0.063823s] ... 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-d405c70f-1a25-41bc-8b8a-a6c96cf4cc25 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_auto [0.051516s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_231_drivers_vendor_passthru_put_observer [0.066063s] ... 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-e4674f7e-4174-4d35-9c16-e7166a830910 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_372_owner_service_can_get_node_ports [0.072350s] ... 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-3c3e95a9-f073-46ad-a354-5db9fdc0ba5b 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"}]}]} {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_basic [0.050739s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_232_drivers_vendor_passthru_delete_admin ... SKIPPED: not updated for scope testing {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_auth_session [0.049672s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_373_lessee_reader_can_get_node_port [0.072451s] ... 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-b2395402-cd15-448f-ad66-80f064798541 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": "2f59b718-4d5c-4ad4-bfa2-850c94fb3bd4", "address": "52:54:00:cf:2d:31", "links": [{"href": "http://localhost/v1/ports/2f59b718-4d5c-4ad4-bfa2-850c94fb3bd4", "rel": "self"}, {"href": "http://localhost/ports/2f59b718-4d5c-4ad4-bfa2-850c94fb3bd4", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_233_drivers_vendor_passthru_delete_observer ... SKIPPED: not updated for scope testing {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_disabled_sessions_cache [0.050239s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_374_third_party_admin_cannot_get_ports [0.064438s] ... 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-b310252b-2cc1-4dd8-93b4-9462d1144bf5 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_basic_session_caching [0.050277s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_234_nodes_bios_get_admin [0.069921s] ... 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-d227d90a-00db-46ac-a33e-ecf2c7352fde X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_375_service_cannot_get_ports [0.065878s] ... 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-6f2ba0d7-94b1-442f-b15a-0b143ed09494 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_address [0.051224s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_235_nodes_bios_get_member [0.069342s] ... 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-571a79c8-9ad0-4443-a863-22160c37e67a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_376_owner_reader_can_get_ports_by_portgroup [0.072431s] ... 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-6c5eee2d-ecad-406d-9fdd-52ae0c40e40a 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.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_password [0.063056s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_new_session_username [0.046771s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_377_owner_service_cam_get_ports_by_portgroup [0.071242s] ... 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-46bcf51f-8be4-4625-ad35-1e0070a1222f 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.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_ensure_session_reuse [0.049737s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_378_lessee_reader_can_get_ports_by_portgroup [0.071680s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/55f12457-9bd2-44c4-9411-2ff20c3c2444/ports WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-4b30382d-3528-4772-9b7f-ab38bbdb6ecc 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.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized [2.241306s] ... ok {0} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsAuthTestCase.test_expire_old_sessions [0.055490s] ... 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) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_379_third_party_admin_cannot_get_ports_by_portgroup [0.068233s] ... 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-126ceac6-13a9-4b9b-9d2c-a578d5957dcb X-Openstack-Ironic-Api-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.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_offset [0.068180s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_236_nodes_bios_get_observer [0.274144s] ... 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-285cdad6-f319-4b65-b2d7-81b9b665ebc2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_380_service_cannot_get_ports_by_portgroup [0.068536s] ... 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-a3177488-8108-47c1-8f6a-219a2b394501 X-Openstack-Ironic-Api-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.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_offset_stream_optimized [0.069944s] ... ok {2} ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_invalid [0.019487s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_237_nodes_bios_bios_setting_get_admin [0.065371s] ... 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-55ab6259-6506-4778-b79d-f73539f53c92 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_format_inspector.TestFormatInspectors.test_vmdk_invalid_type [0.020426s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_381_owner_reader_can_list_volume_connectors [0.070499s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-1323a518-faf0-4003-92a1-95ae4fbd6396 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": "44b7427a-2d03-4d6e-b25d-f51092fb76cc", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/44b7427a-2d03-4d6e-b25d-f51092fb76cc", "rel": "self"}, {"href": "http://localhost/volume/connectors/44b7427a-2d03-4d6e-b25d-f51092fb76cc", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} /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) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_238_nodes_bios_bios_setting_get_member [0.067677s] ... 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-5cdc95fc-6dd0-4e58-876c-477ddd8fa609 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_should_write_image [0.255894s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_382_lessee_reader_can_list_volume_connectors [0.067305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-66537ca4-67be-413f-8bf0-73d233688a42 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": "6535015e-541d-47de-a5c0-1be94a552551", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/6535015e-541d-47de-a5c0-1be94a552551", "rel": "self"}, {"href": "http://localhost/volume/connectors/6535015e-541d-47de-a5c0-1be94a552551", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_239_nodes_bios_bios_setting_get_observer [0.067450s] ... 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-0f7c1264-441f-4e7b-9b12-2ff0a5f1fa91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 1be26c0b-03f2-4d2e-ae87-c02d7f33c123 could not be found.\", \"debuginfo\": null}"} /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.storage.test_external.ExternalInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled [0.046966s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_383_third_party_admin_cannot_get_connector_list [0.065035s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-44e3efc9-fa04-468f-94d5-a42e6560ccfa 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.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final [0.040299s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_240_conductors_get_admin [0.061316s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-17623217-e750-412e-91da-e45ca3f7771a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result [0.038648s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_384_owner_admin_can_post_volume_connector [0.074038s] ... 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/dfd05a85-f674-4fa0-a3ac-5364476269d6 Openstack-Request-Id: req-674f91af-4bf0-4c14-9704-f9d6644c1a03 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "dfd05a85-f674-4fa0-a3ac-5364476269d6", "created_at": "2026-04-12T07:47:59.662306+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/dfd05a85-f674-4fa0-a3ac-5364476269d6", "rel": "self"}, {"href": "http://localhost/volume/connectors/dfd05a85-f674-4fa0-a3ac-5364476269d6", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} /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) {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_241_conductors_get_member [0.062691s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b5c448a6-8e6a-474d-9f88-4fd2f1f054b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_bad_command_result2 [0.041013s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_clean [0.038763s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_385_owner_manager_can_post_volume_connector [0.072874s] ... 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/355ecd62-7b33-4d0b-9593-adb2dc9a80ac Openstack-Request-Id: req-d3381771-9c7c-4f14-bb1c-a3722a955e7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "355ecd62-7b33-4d0b-9593-adb2dc9a80ac", "created_at": "2026-04-12T07:47:59.736009+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/355ecd62-7b33-4d0b-9593-adb2dc9a80ac", "rel": "self"}, {"href": "http://localhost/volume/connectors/355ecd62-7b33-4d0b-9593-adb2dc9a80ac", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_242_conductors_get_observer [0.062765s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f085605a-c443-4c28-a032-07bf298fa774 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__create_configuration_final_registered_deploy [0.038154s] ... ok /bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_386_owner_service_can_post_volume_connector [0.072290s] ... 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/9e4a542f-edc0-4268-87e0-9bb2188ce596 Openstack-Request-Id: req-37dee182-6e3c-4cb4-9e26-2b726bf0327b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9e4a542f-edc0-4268-87e0-9bb2188ce596", "created_at": "2026-04-12T07:47:59.808542+00:00", "updated_at": null, "connector_id": "192.168.1.100", "extra": {}, "type": "ip", "links": [{"href": "http://localhost/v1/volume/connectors/9e4a542f-edc0-4268-87e0-9bb2188ce596", "rel": "self"}, {"href": "http://localhost/volume/connectors/9e4a542f-edc0-4268-87e0-9bb2188ce596", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_243_conductors_hostname_get_admin [0.063426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-781e2310-0464-4df3-b942-2b601431b894 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final [0.049873s] ... 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) {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test__delete_configuration_final_registered [0.049281s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_387_lessee_admin_cannot_post_volume_connector [0.069885s] ... 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-4c7798c6-3b11-4b21-ab44-7ed40a180d3f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_format_inspector.TestFormatInspectors.test_vmdk_stream_optimized [0.450499s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_244_conductors_hostname_get_member [0.070699s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7ec93d0c-bc5c-4f74-a897-dba1d8ad8af5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_fsm.FSMTest.test__validate_target_state [0.020902s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_apply_configuration [0.045128s] ... ok {2} ironic.tests.unit.common.test_fsm.FSMTest.test_initialize [0.018246s] ... ok {2} ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable [0.017674s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_388_lessee_manager_cannot_post_volume_connector [0.069408s] ... 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-217da724-7a12-4b98-b981-ad84803f3ccb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_rbac_legacy_245_conductors_hostname_get_observer [0.066179s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-397c0fda-9369-4662-9a6c-7cb89feb745b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration [0.041418s] ... ok {2} ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_invalid_state [0.019969s] ... ok {2} ironic.tests.unit.common.test_fsm.FSMTest.test_is_stable_not [0.016745s] ... ok {2} ironic.tests.unit.common.test_fsm.FSMTest.test_process_event [0.016954s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_empty_target_raid_config [0.046537s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_389_third_party_admin_cannot_post_volume_connector [0.071101s] ... 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-c48ce131-9c52-4c0c-825e-0b2b4e686fd0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_fsm.FSMTest.test_target_state_stable [0.019233s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_246_allocations_post_admin [0.073350s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b3cf1376-ac7a-4744-8097-90a88c3ac2f1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_no_target_raid_config_after_skipping [0.043424s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_390_service_admin_cannot_post_volume_connector [0.069644s] ... 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-4d93380b-f0c1-490b-9b6a-d9a258eb3fb3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_nonroot [0.041745s] ... ok {1} 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. {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_create_configuration_skip_root [0.041085s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_391_owner_reader_can_get_volume_connector [0.071873s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/f8a4614f-0d90-4c6f-aa0e-b832f548cf56 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b2b998c2-ebfe-4971-82da-49b93c40734b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f8a4614f-0d90-4c6f-aa0e-b832f548cf56", "created_at": "2026-04-12T07:48:00.140733+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/f8a4614f-0d90-4c6f-aa0e-b832f548cf56", "rel": "self"}, {"href": "http://localhost/volume/connectors/f8a4614f-0d90-4c6f-aa0e-b832f548cf56", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_248_allocations_post_observer [0.070497s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-58643686-93bf-4a06-a8b7-c5fd49916d6f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent.AgentRAIDTestCase.test_delete_configuration [0.038887s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps [0.040325s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_249_allocations_get_admin [0.066307s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5f1ff0ab-9655-400f-a0c2-796f51f6f6aa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_392_lessee_reader_can_get_volume_connector [0.074998s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/537aa216-91d2-42e8-bfa1-fea3db7d6183 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2289551f-aefd-43af-930b-f49734aa531a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "537aa216-91d2-42e8-bfa1-fea3db7d6183", "created_at": "2026-04-12T07:48:00.213508+00:00", "updated_at": null, "connector_id": "iqn.2012-06.com.example:initiator", "extra": {}, "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/537aa216-91d2-42e8-bfa1-fea3db7d6183", "rel": "self"}, {"href": "http://localhost/volume/connectors/537aa216-91d2-42e8-bfa1-fea3db7d6183", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_clean_steps_config_priority [0.040669s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.AgentRAIDTestCase.test_get_deploy_steps [0.042727s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_250_allocations_get_member [0.066519s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9658b21c-fd93-4c3f-82f9-7c9b2864fadd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_393_third_party_admin_cannot_get_volume_connector [0.071851s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/43c6e906-e952-4e68-b454-1a474bc9cb88 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e0224295-9318-4564-8959-f81df05a7b5e X-Openstack-Ironic-Api-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 43c6e906-e952-4e68-b454-1a474bc9cb88 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__config_auth [0.329168s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_clean_up [0.052645s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_251_allocations_get_observer [0.066842s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ae36f629-7680-469d-a7d0-e80ef3838885 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_394_lessee_member_cannot_patch_volume_connectors [0.071692s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/03704c99-f3cb-4765-a2b4-5efaa2424573 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-00302098-bc6a-4baa-8d30-39e71c0217e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy [0.053075s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_252_allocations_allocation_id_get_admin [0.062240s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/4673c85f-84d5-44ac-bb8b-757bc0843d89 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-982e7066-2042-4cd7-90cf-6c29fab56279 X-Openstack-Ironic-Api-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 4673c85f-84d5-44ac-bb8b-757bc0843d89 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_395_owner_admin_can_patch_volume_connectors [0.077461s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/13a2569b-2b6f-489d-8f11-edbe2d2ced22 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-41ae23c5-031a-49ef-953a-ef2803d30dde X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_fast_track [0.062416s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_253_allocations_allocation_id_get_member [0.066405s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/c9e7b13c-d33f-464a-9dce-7daff771bf0d WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e01fffed-24c8-4a3b-ab9d-ccf71e884a4b X-Openstack-Ironic-Api-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 c9e7b13c-d33f-464a-9dce-7daff771bf0d could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_storage_should_write_image_false [0.051418s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_254_allocations_allocation_id_get_observer [0.062852s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/96f28f6f-e85f-4964-959b-95ffc1d937b7 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-82f1ff8a-c9fc-456f-97b8-17029ad2a880 X-Openstack-Ironic-Api-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 96f28f6f-e85f-4964-959b-95ffc1d937b7 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_deploy_with_deployment_reboot [0.055261s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_get_properties [0.029095s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_255_allocations_allocation_id_patch_admin [0.066676s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/975681d9-1616-4e1d-ad72-7ba2d46f3237 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-81925756-0de5-4a79-a7a3-88fc48d1274b X-Openstack-Ironic-Api-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 975681d9-1616-4e1d-ad72-7ba2d46f3237 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare [0.066522s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_256_allocations_allocation_id_patch_member [0.068815s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/a0a24314-836f-4d2e-badf-58df09cc0a4a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f63f4d99-2239-4782-b3c2-a80130004f6d X-Openstack-Ironic-Api-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 a0a24314-836f-4d2e-badf-58df09cc0a4a could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_396_owner_manager_can_patch_volume_connectors [0.271477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/ee409b2a-25c9-4b74-989e-8f96a5fa4ede WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-8d27d955-a17b-49c9-919c-5b7b7c1b56db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent.TestCustomAgentDeploy.test_prepare_fast_track [0.055221s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_257_allocations_allocation_id_patch_observer [0.068220s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/574fe0ef-43a5-4fd4-954b-fa6a6bbc449e WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-838d2eae-8ecc-4562-825e-f25f0941fae2 X-Openstack-Ironic-Api-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 574fe0ef-43a5-4fd4-954b-fa6a6bbc449e could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent.TestCustomAgentDeploy.test_validate [0.047048s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_397_lessee_admin_cannot_patch_volume_connectors [0.078996s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/979e48c0-914e-4d84-a37b-4d61c4be73d2 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-00da3812-bf3d-4e3e-8ef1-4cddad358075 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook [0.032729s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_258_allocations_allocation_id_delete_admin [0.065844s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/daf31f9d-cc04-4328-87e2-c7661d299684 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7e227526-a344-4bdd-8b83-5babaa872143 X-Openstack-Ironic-Api-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 daf31f9d-cc04-4328-87e2-c7661d299684 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__get_post_step_hook_no_hook_registered [0.031148s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_398_lessee_manager_can_patch_volume_connectors [0.075881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/7502f024-961c-4336-8858-fd91aef99695 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5f9ce137-c92e-41ec-b6a3-21302e0610ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot [0.052361s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_259_allocations_allocation_id_delete_member [0.064909s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/f16150e4-7e1a-44b0-9c9e-3c323f97a5af GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-9b5fd90b-9d8e-493a-97d7-44048272dd78 X-Openstack-Ironic-Api-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 f16150e4-7e1a-44b0-9c9e-3c323f97a5af could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__no_auth [0.564777s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_deploy [0.052367s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_399_owner_member_can_patch_volume_connectors [0.075356s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/54cce41d-ebc9-4ebd-ac0d-64131b855128 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-74bd0ca5-db8e-449d-a667-e949d447eb26 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_260_allocations_allocation_id_delete_observer [0.067612s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/3a71e9e0-3435-49c8-a3b0-73003d7fef3f GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6bfb31a0-3c27-4c92-8a5f-4c969624ff7c X-Openstack-Ironic-Api-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 3a71e9e0-3435-49c8-a3b0-73003d7fef3f could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail [0.042192s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_400_third_party_admin_cannot_patch_volume_connectors [0.068345s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/13cc982b-a8dc-45fc-9670-01641c54c178 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2c8794e7-2534-4105-b9ec-5540d197dd51 X-Openstack-Ironic-Api-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 13cc982b-a8dc-45fc-9670-01641c54c178 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail_deploy [0.040466s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_261_nodes_allocation_get_admin [0.068872s] ... 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-b04c65a2-f4a6-4597-a09e-034ddcd477f1 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_fail_servicing [0.048075s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_401_owner_admin_can_delete_volume_connectors [0.068009s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/5092c60e-fcf8-4830-851f-c183d60216bc GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-86ddc18a-8591-4707-86a4-19a56d435ace X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_262_nodes_allocation_get_member [0.068870s] ... 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-ecd3a594-341b-47ea-9f39-7ed1273f7e84 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test__post_step_reboot_pregenerated_token [0.052757s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_402_owner_manager_can_delete_volume_connectors [0.067622s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/eb378404-7f0b-4169-b0dc-f37d41503413 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-396f2a61-61c8-458f-a9a2-b0d5fa33dc6b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_263_nodes_allocation_get_observer [0.069030s] ... 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-a7d0a8cb-7fd7-4a1c-b716-072973aed47e X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance [0.046988s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_403_owner_service_can_delete_volume_connectors [0.066185s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/ee71c096-7f50-4202-bf95-544a9682d1ea GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-56507a8c-cf02-4b7e-9b13-9829aa056828 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_boot_instance_no_power_on [0.050636s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_264_nodes_allocation_delete_admin [0.068223s] ... 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-04b43c15-19c3-4f3d-bfe3-d97af111a38b X-Openstack-Ironic-Api-Maximum-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.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service__token_auth [0.343530s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot [0.041675s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_404_lessee_admin_can_delete_volume_connectors [0.069162s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/56c5835d-c625-4295-8f61-5f0c88ce1751 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-738fef41-8f9a-442d-b67a-e40fadaf376d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_265_nodes_allocation_delete_member [0.064792s] ... 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-d55693ba-8c35-42af-8a36-3f28c5cd0031 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_boot_loader_install_fail [0.080224s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_405_lessee_manager_can_delete_volume_connectors [0.068979s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/30b29e66-087b-4838-8b65-57b4eb4082af GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-871a485f-5c1c-4327-a113-d8be67e5fac0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_266_nodes_allocation_delete_observer [0.064955s] ... 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-dfc350aa-fffb-495f-a255-4eb37c907fb5 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_always [0.040393s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_406_third_party_admin_cannot_delete_volume_connector [0.065986s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/2cd63383-4835-4e7a-bf16-e0619acb1992 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-462e3833-dcb9-411a-b581-962bf17f7cf6 X-Openstack-Ironic-Api-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 2cd63383-4835-4e7a-bf16-e0619acb1992 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_default [0.038353s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_267_deploy_templates_post_admin [0.067913s] ... 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-a5adad3f-0cd7-418f-a167-54e0731c905b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_enforce_persistent_boot_device_never [0.041959s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_407_service_cannot_delete_volume_connector [0.067733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/f0a3b506-0483-4797-b20f-6b239e2149e1 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-162a0ee2-3d26-4359-b71e-7619df89999f X-Openstack-Ironic-Api-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 f0a3b506-0483-4797-b20f-6b239e2149e1 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_268_deploy_templates_post_member [0.068781s] ... 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-4ecab6fc-82de-4473-9483-1791a8b28b22 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_lenovo [0.048722s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid [0.043403s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_408_owner_reader_can_get_targets [0.071854s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-77a4569c-6111-4777-890b-b0901b67407a 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": "ca1a85cd-bfd8-4c97-b537-6fb25702b278", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/ca1a85cd-bfd8-4c97-b537-6fb25702b278", "rel": "self"}, {"href": "http://localhost/volume/targets/ca1a85cd-bfd8-4c97-b537-6fb25702b278", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {2} ironic.tests.unit.common.test_glance_service.CheckImageServiceTestCase.test_check_image_service_client_already_set [0.322743s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_269_deploy_templates_post_observer [0.069567s] ... 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-e9f8fa23-8493-4b6b-9aac-e22be04dd4dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_glance_service.TestGlanceImageService.test_client_forbidden_converts_to_imagenotauthed [0.021144s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_no_root_uuid_whole_disk [0.043538s] ... ok {2} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_client_notfound_converts_to_imagenotfound [0.019194s] ... ok {2} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_file_url [0.023657s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_409_lesse_reader_can_get_targets [0.070764s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-61b85859-9e7a-40b6-ad46-aecd10cebf26 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": "0983aa6a-be2f-4146-8a39-88175b01e2ba", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/0983aa6a-be2f-4146-8a39-88175b01e2ba", "rel": "self"}, {"href": "http://localhost/volume/targets/0983aa6a-be2f-4146-8a39-88175b01e2ba", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_270_deploy_templates_get_admin [0.062342s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d7622c92-feb9-4a11-b538-b51a7f5209e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_non_software_raid [0.044129s] ... ok {2} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_download_no_data [0.022957s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_410_third_party_admin_cannot_get_target_list [0.067314s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-3f1276db-a06f-44d2-94c1-6f58071f351d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"targets": []} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_271_deploy_templates_get_member [0.060785s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c535c97c-71c3-4788-97a8-099232bc656b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid [0.053493s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_272_deploy_templates_get_observer [0.059733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-829858ad-2468-4ad7-8129-1b2331c3cda0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_411_owner_reader_can_get_volume_target [0.071654s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/949735df-b4a3-438b-a87e-bda7e5a367ba WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-93513318-db3c-43db-8ac2-25b2bd886966 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "949735df-b4a3-438b-a87e-bda7e5a367ba", "created_at": "2026-04-12T07:48:01.771818+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/949735df-b4a3-438b-a87e-bda7e5a367ba", "rel": "self"}, {"href": "http://localhost/volume/targets/949735df-b4a3-438b-a87e-bda7e5a367ba", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_273_deploy_templates_deploy_template_id_get_admin [0.059698s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/8c1e9adc-94bf-40a1-8913-895c91c2f285 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-387ac119-4914-4db9-99af-1d57c48535d7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_412_lessee_reader_can_get_volume_target [0.096517s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/3b9b94dc-6042-48ca-9d29-d32c957593a5 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-975ec704-352d-4a8c-96e6-f814a75c2b4d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "3b9b94dc-6042-48ca-9d29-d32c957593a5", "created_at": "2026-04-12T07:48:01.842841+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/3b9b94dc-6042-48ca-9d29-d32c957593a5", "rel": "self"}, {"href": "http://localhost/volume/targets/3b9b94dc-6042-48ca-9d29-d32c957593a5", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_bios [0.259671s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_413_third_party_admin_cannot_get_volume_target [0.102281s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/c7f6c7ea-be19-4b01-96d5-e41fb9378674 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fb619d12-0706-4741-a6eb-935ba7f67e4d X-Openstack-Ironic-Api-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 c7f6c7ea-be19-4b01-96d5-e41fb9378674 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_bios [0.053262s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_414_owner_admin_create_volume_target [0.072821s] ... 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/730d28fb-2277-4601-9b93-c31eacc73846 Openstack-Request-Id: req-2c5a2565-2429-4f82-9973-49faf2e32cec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "730d28fb-2277-4601-9b93-c31eacc73846", "created_at": "2026-04-12T07:48:02.075078+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/730d28fb-2277-4601-9b93-c31eacc73846", "rel": "self"}, {"href": "http://localhost/volume/targets/730d28fb-2277-4601-9b93-c31eacc73846", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_exception_uefi [0.049882s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_274_deploy_templates_deploy_template_id_get_member [0.265521s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/ddacaa91-3a5c-4c63-b544-4551e14235b9 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-08296a22-51be-487b-93b4-037b55071605 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid [0.049401s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_415_owner_service_create_volume_target [0.075637s] ... 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/9e06c538-3a50-4547-9207-958b8bb4e85f Openstack-Request-Id: req-46ed9e83-3b08-4703-be46-d0e1df7e3c96 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "9e06c538-3a50-4547-9207-958b8bb4e85f", "created_at": "2026-04-12T07:48:02.153089+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/9e06c538-3a50-4547-9207-958b8bb4e85f", "rel": "self"}, {"href": "http://localhost/volume/targets/9e06c538-3a50-4547-9207-958b8bb4e85f", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_275_deploy_templates_deploy_template_id_get_observer [0.061695s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/abae824d-de9b-40ee-8b01-26ce154bf863 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-94675b8b-371b-4886-be26-3845c1f34152 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_on_software_raid_explicit_uuid_bios [0.049672s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_416_owner_manager_create_volume_target [0.076239s] ... 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/870ab875-ac1f-4feb-8576-04b1fdb75ba1 Openstack-Request-Id: req-ae795725-af6e-473a-aad2-73d7521943cb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "870ab875-ac1f-4feb-8576-04b1fdb75ba1", "created_at": "2026-04-12T07:48:02.231381+00:00", "updated_at": null, "boot_index": 3, "extra": {}, "properties": {}, "volume_id": "test-id", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/870ab875-ac1f-4feb-8576-04b1fdb75ba1", "rel": "self"}, {"href": "http://localhost/volume/targets/870ab875-ac1f-4feb-8576-04b1fdb75ba1", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_276_deploy_templates_deploy_template_id_patch_admin [0.063210s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/0b4fae7a-7da4-4cae-be50-de904f06e838 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2c5a1333-2a5f-4681-8c00-ef4b12ac8654 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_set_boot_device_fail [0.077855s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_277_deploy_templates_deploy_template_id_patch_member [0.063858s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/0f29dceb-a6e9-4552-9314-8f04faaae0c8 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7481c69d-35d1-423b-9385-912b8bb99e48 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_417_lessee_admin_create_volume_target [0.080131s] ... 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/47f9dfb5-f134-4bdd-bd81-1c3c3962dbe8 Openstack-Request-Id: req-80666fd8-d068-483f-a577-72d2519f194c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "47f9dfb5-f134-4bdd-bd81-1c3c3962dbe8", "created_at": "2026-04-12T07:48:02.311186+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id2", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/47f9dfb5-f134-4bdd-bd81-1c3c3962dbe8", "rel": "self"}, {"href": "http://localhost/volume/targets/47f9dfb5-f134-4bdd-bd81-1c3c3962dbe8", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_uefi [0.043087s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image [0.043520s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_278_deploy_templates_deploy_template_id_patch_observer [0.064391s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/8b0df946-a7e5-48f6-b268-c07ca5b74327 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1e0c525e-5c92-4eed-8a8c-4eb54ac6502f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_whole_disk_image_bios [0.040418s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_418_lessee_manager_create_volume_target [0.119814s] ... 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/f0a4bbd6-6fe1-4e23-b960-112e8186a1c4 Openstack-Request-Id: req-4f65bffa-b1f2-4b07-b206-b23f4f7d0ff9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f0a4bbd6-6fe1-4e23-b960-112e8186a1c4", "created_at": "2026-04-12T07:48:02.435045+00:00", "updated_at": null, "boot_index": 2, "extra": {}, "properties": {}, "volume_id": "test-id3", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/f0a4bbd6-6fe1-4e23-b960-112e8186a1c4", "rel": "self"}, {"href": "http://localhost/volume/targets/f0a4bbd6-6fe1-4e23-b960-112e8186a1c4", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_279_deploy_templates_deploy_template_id_delete_admin [0.063069s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/01e0524e-7467-493f-8e6a-261d88883b7c GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f59b2e4f-9c58-4de6-be8f-f696ff3c4377 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_configure_local_boot_with_prep [0.039589s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_post_clean_step_hook [0.026332s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_280_deploy_templates_deploy_template_id_delete_member [0.060412s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/aad558bb-ce9a-49c9-90a6-b0c2d46c2de4 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-173be4c5-0a32-4e93-b557-6714f80e9ecb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_419_third_party_admin_cannot_create_volume_target [0.072570s] ... 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-90a6ce5a-17a5-49d5-8a01-ea3ff3c6de63 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot [0.047791s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_281_deploy_templates_deploy_template_id_delete_observer [0.058939s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/f8c3137d-cb12-49ba-b85a-a25f2bdbfb8e GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-37263dd1-e1f8-423f-9920-11b03f734719 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot_configure_fails [0.045279s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_420_owner_member_can_patch_volume_target [0.074931s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/49a7df09-e1f1-4b31-a3a5-62e8edb56a08 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3942938c-7cd7-428d-a364-7f39ff17848d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_prepare_instance_to_boot_localboot_prep_partition [0.048672s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_282_chassis_post_admin [0.064490s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-2e0e13e7-c1f1-4257-98f7-6c4aac5880df X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_switch_to_tenant_network [0.045221s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_421_owner_service_can_patch_volume_target [0.073635s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/8f04be67-c581-4205-bbcd-a495de7cbf59 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-40020cc6-ee30-4e45-b0c8-c635fa6f79b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_283_chassis_post_member [0.062296s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-21a335c4-16c6-4e71-a42c-e7521aac162b X-Openstack-Ironic-Api-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.common.test_glance_service.TestGlanceImageService.test_download_with_retries [1.023085s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_422_lessee_admin_can_patch_volume_target [0.073371s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/cf606843-f24e-4cfd-82bc-b9d0eb4976cc WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5ce4c9cc-35f7-4294-a70b-d60ce0f67b00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_switch_to_tenant_network_fails [0.079644s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_284_chassis_post_observer [0.065042s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-33ec8de2-bc37-4e1e-bb9b-9366a82a29fd X-Openstack-Ironic-Api-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.common.test_glance_service.TestGlanceImageService.test_show_makes_datetimes [0.050490s] ... ok {2} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_passes_through_to_client [0.026782s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent [0.047468s] ... ok {2} ironic.tests.unit.common.test_glance_service.TestGlanceImageService.test_show_raises_when_image_not_active [0.020523s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_423_lessee_manager_can_patch_volume_target [0.073627s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/64cf62a6-9af2-4bff-9fea-149ddf9cd517 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-d1cd90c1-dae5-48ca-b7c5-a23952ec6277 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_rbac_legacy_285_chassis_get_admin [0.062296s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b7ad3571-308f-480e-8ab2-7b11363a2d06 X-Openstack-Ironic-Api-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.common.test_glance_service.TestGlanceImageService.test_show_raises_when_no_authtoken_in_the_context [0.022070s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_get_power_state_fails [0.049943s] ... ok {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_automatic_retry [0.035347s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_424_lessee_member_cannot_patch_volume_target [0.068540s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/9e065d9d-f64c-4158-88e9-57f899c40fe6 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-64f2722b-985f-4e88-9915-af9adc071170 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_rbac_legacy_286_chassis_get_member [0.061877s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-f4f630d0-f8f8-40a3-8647-3077a11f5d60 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_no_power_on_support [0.048279s] ... ok {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_driver_not_found [0.037870s] ... ok {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success [0.032129s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_action_oob_power_off [0.050985s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_425_third_party_admin_cannot_patch_volume_target [0.072613s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/d530cb82-8219-4ec3-b9fb-04c71c7ee844 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d04aa36b-505a-47d9-a0d1-8ddd78d39c43 X-Openstack-Ironic-Api-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 d530cb82-8219-4ec3-b9fb-04c71c7ee844 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_287_chassis_get_observer [0.076502s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-12917d8e-757d-43ff-9f15-c083c972ac06 X-Openstack-Ironic-Api-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.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_hardware_type_success_groups [0.041414s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_action_oob_power_off_failed [0.054733s] ... ok {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_reset_interval [0.030603s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_288_chassis_detail_get_admin [0.066008s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-399a8e85-5abf-4c79-8633-93bdc1894c16 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_426_service_cannot_patch_volume_target [0.071073s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/1496d0f3-7dfb-46ca-982f-f991019b7a34 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-49f649b8-b40f-4de7-914f-59ed621bb06a X-Openstack-Ironic-Api-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 1496d0f3-7dfb-46ca-982f-f991019b7a34 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_reset_interval_not_happen_sqlite [0.033106s] ... ok {2} ironic.tests.unit.common.test_hash_ring.HashRingManagerTestCase.test_hash_ring_manager_uncached [0.022217s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_power_off_fails [0.076759s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_289_chassis_detail_get_member [0.064136s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c9d294a4-bbbb-4871-8da9-2261e2aef5a7 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_427_owner_admin_can_delete_volume_target [0.071612s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/8af80a6f-bcc0-4eaa-9559-4c893989b1b0 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-19483902-9655-4e90-a08d-cfc2f164662e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_doesnt_complete [0.054827s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_290_chassis_detail_get_observer [0.065341s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-f36e95d7-7593-408c-be88-3583eaae71d4 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_428_owner_manager_can_delete_volume_target [0.070132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/e2f11c6a-e936-4f9e-a422-b6b1c34e7b38 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-dadc0cc1-e26f-4d81-892d-a6731fb5698a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_fails [0.052385s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_291_chassis_chassis_id_get_admin [0.064549s] ... 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-141b342a-90f7-4851-b5e7-8520517cfb07 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_base.AgentDeployMixinTest.test_tear_down_agent_soft_poweroff_race [0.049257s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command [0.025129s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_292_chassis_chassis_id_get_member [0.061381s] ... 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-08f350e3-a555-4695-b52b-8ee1ea8deace X-Openstack-Ironic-Api-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.drivers.modules.test_agent_client.TestAgentClient.test__command_agent_client [0.021133s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code [0.021030s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy [0.020292s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_293_chassis_chassis_id_get_observer [0.061660s] ... 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-7d593591-6836-4f50-a4c1-d1015015c805 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_agent_busy_conflict [0.022594s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_error_code_okay_error_typeerror_embedded [0.024129s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect [0.026375s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_294_chassis_chassis_id_patch_admin [0.063258s] ... 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-f3936b2f-47ba-4db1-a3b8-dbaa82580ef8 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_is_running [0.022069s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_429_lessee_admin_can_delete_volume_target [0.261239s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/431ee14a-6924-420b-9236-99e9b20b984e GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-9b53d5fe-14b7-47c8-bffe-0364f9b23edc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_command_not_running [0.023600s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_no_command_running [0.023057s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_430_lessee_manager_can_delete_volume_target [0.068418s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/329476fd-4c03-4ecb-a556-f1621111d831 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-1f1dbe97-f85c-409c-953a-80df1eb506f5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_connect_wrong_command_running [0.022906s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_json [0.025839s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_fail_post [0.019551s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_295_chassis_chassis_id_patch_member [0.131733s] ... 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-7ae0d91f-b07e-40a4-9026-180edad35f47 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_431_owner_member_cannot_delete_volume_target [0.066699s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/9650c134-f91e-4298-b578-6e4bf190bb59 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4257ac07-b281-480b-9f5e-f3b359968abe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_client.TestAgentClient.test__command_poll [0.023215s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify [0.022735s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_config [0.019905s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_432_lessee_member_cannot_delete_volume_target [0.064623s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/11122b5b-1565-4ee4-bd08-59781b0d52f8 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6d8c710e-d8d0-497b-8b1b-4b724175e8c4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable [0.020737s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_disable_in_driver_info [0.024351s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_internal [0.019556s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_296_chassis_chassis_id_patch_observer [0.135803s] ... 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-0d009971-ed1b-4f37-a19f-933db5801f8b X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_433_third_party_admin_cannot_delete_volume_target [0.069465s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/a0243e63-6829-4bda-83c4-a4bf0226ed1c GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4e0438b0-e3de-4134-97cd-e7cb0be0135a X-Openstack-Ironic-Api-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 a0243e63-6829-4bda-83c4-a4bf0226ed1c could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__command_verify_invalid_file [0.020149s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_body [0.020362s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url [0.018819s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test__get_command_url_fail [0.019623s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_434_service_cannot_delete_volume_target [0.068780s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/944466ed-82bb-47e0-9da9-f97bced0c442 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-eeac4a7e-6ee2-43d7-bd6c-630d096d42ae X-Openstack-Ironic-Api-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 944466ed-82bb-47e0-9da9-f97bced0c442 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_content_type_header [0.019338s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_execute_clean_step [0.020300s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_execute_service_step [0.019990s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_297_chassis_chassis_id_delete_admin [0.130727s] ... 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-49bcf837-fb87-4117-b213-26dc98155676 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACProjectScoped.test_project_scoped_435_owner_reader_can_get_volume_connectors [0.071869s] ... 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-932673ec-d90f-40c2-99f3-bd7f993eff66 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"}]} {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue [0.021466s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_exc [0.019714s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback [0.018334s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_298_chassis_chassis_id_delete_member [0.070777s] ... 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-29a99689-9503-4e5a-a323-de6823758100 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_finalize_rescue_fallback_restricted [0.019327s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_clean_steps [0.019081s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status [0.020598s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_299_chassis_chassis_id_delete_observer [0.063101s] ... 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-da16e0e4-9dfe-4433-ad93-01c62e693bf7 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_no_retries [0.019603s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_auth_from_config [0.909489s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_436_owner_service_can_get_volume_connectors [0.146173s] ... 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-1019a8a8-f4a2-4ddd-9118-12c7e3c7041c 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"}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_300_node_history_get_admin [0.064924s] ... 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-6ffd042e-e155-49e8-8132-5a2b081e6a8d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACScoped.test_rbac_legacy_301_node_history_get_member [0.071879s] ... 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-6bd2f249-acf4-4a96-8376-b61bde98ca60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_437_lessee_reader_can_get_node_volume_connectors [0.154171s] ... 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-9997e1fb-8445-42ad-af19-a3aab3135040 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": "190606de-b265-4027-b024-d0c4bf84253e", "connector_id": "iqn.2012-06.com.example:initiator", "type": "iqn", "links": [{"href": "http://localhost/v1/volume/connectors/190606de-b265-4027-b024-d0c4bf84253e", "rel": "self"}, {"href": "http://localhost/volume/connectors/190606de-b265-4027-b024-d0c4bf84253e", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_302_node_history_get_observer [0.067209s] ... 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-8442fa7c-3eaa-4f41-8865-b3029f631497 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_retries [0.235856s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_commands_status_verify [0.020346s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_303_node_history_get_entry_admin [0.067686s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/ebb32277-aaab-4a0b-b121-b23b10611fc0 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-88627576-2f1d-422f-a159-dd3aa7cdb5db X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_agent_client.TestAgentClient.test_get_service_steps [0.018334s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_get_service_steps_older_client [0.019462s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader [0.018372s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_438_third_party_admin_cannot_get_node_volume_connectors [0.139045s] ... 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-e8adcf34-47ef-4b5a-90f3-e91377cfa660 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_install_bootloader_with_prep [0.019546s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_304_node_history_get_entry_member [0.066273s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/db8042e3-336d-4777-a1c0-cd7048128083 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-74da5ee9-c6f1-45d7-a29b-c9378cc1134a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_agent_client.TestAgentClient.test_power_off [0.018607s] ... ok {0} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClient.test_sync [0.018705s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure [0.037974s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_exception [0.042172s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_rbac_legacy_305_node_history_get_entry_observer [0.114101s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/66fb89f4-1418-4be2-b7de-26b31fcaac28 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cf5a1b11-2963-47ba-aea2-c29c616ebc28 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_439_service_cannot_get_node_volume_connectors [0.157534s] ... 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-6ba35e3b-6b63-4f9a-a463-7fde1e127a53 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_none_requested [0.040835s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronClient.test_get_neutron_client_noauth [0.489292s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_001_values ... SKIPPED: These are fake reference values for YAML templating {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_configure_unsupported [0.043317s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure [0.040843s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_440_owner_reader_can_get_node_volume_targets [0.102823s] ... 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-981a800c-c3b6-4a6b-b563-84ce5001812b 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"}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_002_nodes_post_admin [0.099585s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-36c707d1-5a38-409b-b451-74c15dbd787a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_exception [0.041596s] ... ok {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_none_requested [0.038842s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_441_owner_service_can_read_get_node_volume_targets [0.101492s] ... 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-78e14308-bd03-41c4-a910-6a6deb131b0e 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"}]} {0} ironic.tests.unit.drivers.modules.test_boot_mode_utils.SecureBootTestCase.test_deconfigure_unsupported [0.043013s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_003_nodes_post_member [0.099236s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-31101a70-eab5-4611-a405-da46d9bac29e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_agent_add_clean_params [0.050803s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_442_lessee_reader_can_get_node_volume_targets [0.094203s] ... 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-8767e565-0877-48b0-9e68-daa50ed364a7 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": "2f5fed7c-9143-4ba3-8081-48ea237ddb20", "boot_index": 0, "volume_id": "12345678", "volume_type": "iscsi", "links": [{"href": "http://localhost/v1/volume/targets/2f5fed7c-9143-4ba3-8081-48ea237ddb20", "rel": "self"}, {"href": "http://localhost/volume/targets/2f5fed7c-9143-4ba3-8081-48ea237ddb20", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_conf [0.033419s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_004_nodes_post_observer [0.094153s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/nodes WITH {'name': 'node', 'driver': 'fake-driverz'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-68fa4af0-60c5-4a59-9736-8d573d26f6fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_context [0.307937s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_build_agent_options_keystone [0.033203s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_force_raw [0.028676s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_443_third_part_admin_cannot_read_node_volume_targets [0.081519s] ... 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-81b5beda-e96e-4d19-be6c-88b396779ac2 X-Openstack-Ironic-Api-Maximum-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.api.test_acl.TestRBACScoped.test_scoped_canary_005_nodes_get_node_admin [0.070158s] ... 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-bc9d331d-2c69-4c1a-a49d-d9145f11786a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_no_stream [0.030065s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_partition [0.030009s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_006_nodes_get_node_member [0.064380s] ... 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-a5a275cb-ad56-471e-93c3-46b4632e0842 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_direct_deploy_should_convert_raw_image_true [0.028387s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_444_service_cannot_read_node_volume_targets [0.080072s] ... 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-2a5f7ce6-7029-4e5c-a23c-1ab5843ffa22 X-Openstack-Ironic-Api-Maximum-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning [0.052920s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_007_nodes_get_node_observer [0.062646s] ... 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-898610f7-b105-44ca-b9c6-fa1c49202334 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_445_owner_reader_cannot_get_drivers [0.068251s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-2872d843-dd71-42e6-aeef-4086259fd82d X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_broken_fast_track [0.052456s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_008_nodes_get_node_other_admin [0.069000s] ... 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-214bbe8e-cdbc-47cd-977f-d14ba8654434 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_446_lessee_reader_cannot_get_drivers [0.070794s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-fc350e24-7dc5-4eba-921c-fb7733c903a4 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_fast_track [0.057567s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_009_nodes_get_admin [0.070995s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0e39b056-f579-461a-a4cb-6aa8d577cc73 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_cleaning_manage_boot_false [0.056242s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_447_third_party_admin_cannot_get_drivers [0.072056s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-7f2bf652-ff60-407e-8e04-6fcac3a6d956 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_prepare_inband_service [0.055471s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_448_service_cannot_get_drivers [0.065135s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-41580b8a-9d33-44e7-9521-2d808f485a6e X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning [0.047300s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_449_owner_reader_cannot_get_drivers_vendor_passthru [0.064456s] ... 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-707ab589-37ce-4b5b-8d4b-cc0f6d9aa66a X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_cleaning_error [0.044970s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_fast_track [0.048884s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_450_lessee_reader_cannot_get_drivers_vendor_passthru [0.071686s] ... 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-2f207cb4-d303-4b6d-b177-3f5b243e7d08 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_cleaning_manage_boot_false [0.047343s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_010_nodes_get_other_admin [0.277597s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-baf42e0c-7e05-41a0-8b5f-342383e4509d 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.common.test_neutron.TestNeutronClient.test_get_neutron_client_with_token [0.613931s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_451_third_party_admin_cannot_get_drivers_vendor_passthru [0.071264s] ... 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-b00de206-c1f4-4ee7-92c3-742f9b76256f X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_service [0.056206s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_011_nodes_detail_get_admin [0.063211s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a3b2adb5-1dad-4f31-b9bb-845b5b95a567 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_452_service_cannot_get_drivers_vendor_passthru [0.064295s] ... 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-d94136a7-4f86-4fde-80df-3f0ed507dc12 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.AgentMethodsTestCase.test_tear_down_inband_service_service_error [0.046028s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_bios [0.024760s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_012_nodes_detail_get_member [0.063326s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-15ea3bc9-2404-4707-ab71-49b8349bb24e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback [0.021371s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_fallback_bios [0.021045s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_453_owner_reader_can_get_bios_setttings [0.075161s] ... 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-966cea0c-cc92-4f5c-9ace-29ceda240ac4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": []} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_other_arch [0.021287s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_013_nodes_detail_get_observer [0.074836s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-43debd53-10f7-4d9a-a14c-062445ae0718 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_file_uefi [0.020965s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_boot_uefi [0.021228s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_454_lessee_reader_can_get_bios_settings [0.073527s] ... 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-140bd3f4-f02e-45e0-80ab-4a9711d2ce2d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": []} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template [0.024401s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_014_nodes_node_ident_get_admin [0.068004s] ... 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-e754eda7-6505-44e4-97d5-4a12f6725944 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none [0.025136s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_none_bios [0.025001s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_455_third_party_admin_cannot_get_bios_settings [0.069010s] ... 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-2809d573-7577-4d97-8341-0e3f852a9e56 X-Openstack-Ironic-Api-Maximum-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_neutron.TestNeutronClient.test_get_neutron_client_without_token [0.317370s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_ipxe_config_template_override_pxe_fallback [0.025519s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_015_nodes_node_ident_get_member [0.070979s] ... 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-a9e33178-f112-44e7-8787-caf4302158cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_bios_without_by_arch [0.021878s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__add_ip_addresses_for_ipv6_stateful [0.033642s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_in_by_arch [0.022137s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv4 [0.030524s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_456_service_can_get_bios_setttings_owner_project [0.073078s] ... 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-e315ae2b-a1ad-4f63-ab38-6c9a5ecdc5af X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"bios": []} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_cpu_not_in_by_arch [0.022591s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test__uncidr_ipv6 [0.029903s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_016_nodes_node_ident_get_observer [0.071001s] ... 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-be239015-37fb-4350-b95b-33f3b1a75c2f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property [0.022300s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_emtpy_property_bios_default [0.022761s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_457_service_cannot_get_bios_setttings [0.071020s] ... 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-89fdddf3-9d3a-44ab-8e04-f3f118b94115 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_boot_file_uefi_without_by_arch [0.024716s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_all_ports_fail [0.056962s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_bios_without_by_arch [0.022798s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_017_nodes_node_ident_patch_admin [0.076086s] ... 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-349d564f-52dc-4479-8fcc-942030f39576 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_in_by_arch [0.022710s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_458_owner_reader_cannot_get_conductors [0.065365s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-c82aebe6-a56e-4959-b87c-4668e333101b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_neutron.TestNeutronNetworkActions.test_add_network_create_some_ports_fail [0.065583s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_cpu_not_in_by_arch [0.022515s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property [0.021787s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_018_nodes_node_ident_patch_member [0.074228s] ... 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-622aac00-ef4c-4047-b530-c6f176b75f9b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_emtpy_property_bios [0.022080s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_port [0.048436s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_459_lessee_reader_cannot_get_conductors [0.066424s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f6275599-8d96-44eb-b35a-eaa119e13d67 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_per_node [0.024790s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.GetPxeBootConfigTestCase.test_get_pxe_config_template_uefi_without_by_arch [0.021465s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_network_no_pxe_enabled_ports [0.049930s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_019_nodes_node_ident_patch_observer [0.076602s] ... 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-8711fea1-4b80-4d9e-9079-4f7d7b0d67e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_with_master_path [0.021972s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_460_third_party_admin_cannot_get_conductors [0.069509s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-13d69b99-3a6a-43ae-a389-f7bdd445eeae X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceImageCacheTestCase.test_without_master_path [0.022598s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_all_supported_capabilities [0.018568s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network [0.060214s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label [0.019085s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_020_nodes_node_ident_delete_admin [0.072861s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7fd4a44e-778d-417d-a2c4-1fa59e7e586e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set [0.018736s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_461_owner_reader_can_get_allocations [0.077225s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9b42b07a-ab10-41d3-9e16-7196de1e43d0 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": "d49d8252-855a-44c9-864a-4d10bc594f81", "created_at": "2026-04-12T07:48:06.108923+00:00", "updated_at": "2026-04-12T07:48:06.110255+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/d49d8252-855a-44c9-864a-4d10bc594f81", "rel": "self"}, {"href": "http://localhost/allocations/d49d8252-855a-44c9-864a-4d10bc594f81", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_all_ports [0.062401s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_021_nodes_node_ident_delete_member [0.071591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-68275cdf-40ea-4170-8cf3-996f84f40150 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_instance_uuid [0.052440s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_462_lessee_reader_can_get_allocations [0.073777s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7e869967-141e-4571-b30c-7fb559bb3524 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": "4528a288-0cca-4c59-b34c-2cfd2b97313a", "created_at": "2026-04-12T07:48:06.181963+00:00", "updated_at": "2026-04-12T07:48:06.183230+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/4528a288-0cca-4c59-b34c-2cfd2b97313a", "rel": "self"}, {"href": "http://localhost/allocations/4528a288-0cca-4c59-b34c-2cfd2b97313a", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_022_nodes_node_ident_delete_observer [0.074547s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f7b91e02-f70d-43f7-b15f-00efc4bd49f9 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_add_ports_to_network_with_sg [0.064431s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_463_owner_reader_can_get_their_allocation [0.072567s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/07bdfffe-3dab-4c59-9907-f656b4a0644e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d9cb3031-716a-403c-b94d-07cb0a689d87 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "07bdfffe-3dab-4c59-9907-f656b4a0644e", "created_at": "2026-04-12T07:48:06.251477+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/07bdfffe-3dab-4c59-9907-f656b4a0644e", "rel": "self"}, {"href": "http://localhost/allocations/07bdfffe-3dab-4c59-9907-f656b4a0644e", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_ports_with_client_id_to_network [0.060880s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_023_nodes_validate_get_admin [0.074627s] ... 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-e6df43b0-f48e-44bc-ad9f-c28b354d6e29 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_nothing_set_bios_mode [0.218427s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_464_lessee_reader_can_get_their_allocation [0.070759s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/edcec19a-6937-451b-b425-3cc74990f8f3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-f144370b-9dec-46fe-a575-eeb5c5f850f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "edcec19a-6937-451b-b425-3cc74990f8f3", "created_at": "2026-04-12T07:48:06.329435+00:00", "updated_at": "2026-04-12T07:48:06.330696+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/edcec19a-6937-451b-b425-3cc74990f8f3", "rel": "self"}, {"href": "http://localhost/allocations/edcec19a-6937-451b-b425-3cc74990f8f3", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_get_disk_label_uefi_mode [0.019361s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_false [0.018557s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_invalid [0.018722s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_024_nodes_validate_get_member [0.070108s] ... 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-9a871190-4d9c-4494-add7-336779f2b99c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_is_secure_boot_requested_true [0.017880s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_465_owner_admin_can_delete_their_allocation [0.072250s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/1336955e-9e6d-42c8-a850-feafe1c100af GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-51d8858e-17d1-43cd-a835-6f0be208b420 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities [0.018093s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_capabilities_string [0.017898s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_025_nodes_validate_get_observer [0.068312s] ... 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-42c146cb-d1cf-4500-b0d4-7bfe5da70d41 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_parse_instance_info_invalid_type [0.018555s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability [0.018393s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info [0.018437s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_instance_info_with_exc [0.019758s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_026_nodes_maintenance_put_admin [0.066827s] ... 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-4ab7831c-b821-4769-b0e6-54e88bce4281 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.ParseInstanceInfoCapabilitiesTestCase.test_validate_boot_mode_capability_with_exc [0.018571s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_config_whole_disk_image [0.019039s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_ipxe_iscsi_boot [0.020298s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_027_nodes_maintenance_put_member [0.069574s] ... 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-e21e90d9-f4ba-476d-9777-5caec8c689cc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_pxe_config_whole_disk_image [0.019326s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_add_smartnic_port_to_network [0.293277s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_elilo_config_whole_disk_image [0.018869s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_grub_config_whole_disk_image [0.019793s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_get_local_group_information [0.047394s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.SwitchPxeConfigTestCase.test_switch_uefi_ipxe_config_whole_disk_image [0.019818s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_028_nodes_maintenance_put_observer [0.071171s] ... 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-f453a77d-4e2d-4d5d-bc3a-6962c0158cd7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_get_neutron_port_data [0.030444s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_466_owner_manager_can_delete_their_allocation [0.283513s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/ee34b238-0150-481f-9140-44074686cb5a GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-b56f7f8f-d256-4942-bc69-f54aafa94ded X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_neutron.TestNeutronNetworkActions.test_get_neutron_port_data_ipv6 [0.030685s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_anaconda [0.060223s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_029_nodes_maintenance_delete_admin [0.069483s] ... 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-e09b9e4e-ec39-4c0a-a8a1-4f72d39be1fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_get_node_portmap [0.045058s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_467_lessee_admin_can_delete_their_allocation [0.074231s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/338fdd8f-aa23-4ab1-96c1-d103c6580ed0 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-bbd56de2-4739-4480-ab5e-583a664284fd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_anaconda_img_checked [0.059712s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_false [0.029091s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_030_nodes_maintenance_delete_member [0.066311s] ... 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-323a4d56-ef57-43d3-b572-22fb7f6cb12c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_is_smartnic_port_true [0.028267s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_image [0.056400s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_468_lessee_manager_can_delete_their_allocation [0.071754s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/e45b2e78-8b73-4c83-ab16-3540c0fb3e32 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-3742077f-222f-4d48-95c6-53432aaa535d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_neutron.TestNeutronNetworkActions.test_remove_neutron_ports [0.041297s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_031_nodes_maintenance_delete_observer [0.070958s] ... 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-43968b61-fd77-433d-802c-7125322b10f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_image_checked [0.057670s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_fail [0.043379s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_469_owner_member_can_delete_their_allocation [0.072778s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/088760ba-baf4-40ce-a0a2-76924d79e782 GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-4a04ba83-3c52-48da-87dc-77a6805993b7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_scoped_canary_032_nodes_management_boot_device_put_admin [0.069066s] ... 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-6f582e79-04d3-47d6-b5b6-e980f2845e21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_delete_race [0.042033s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image [0.057429s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_ports_list_fail [0.046252s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_470_lessee_member_can_delete_their_allocation [0.080970s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/3a6cfa5f-05fb-447b-a54f-301e04fc8f5a GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-5e72729d-31e9-4d79-aa24-37f635228a74 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_glance_partition_image_checked [0.057124s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_033_nodes_management_boot_device_put_member [0.072658s] ... 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-07a0bdc9-f36f-4ab7-a927-f3bd7e758e7c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_remove_neutron_smartnic_ports [0.050239s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_image_not_found [0.047486s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network [0.048809s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_034_nodes_management_boot_device_put_observer [0.084307s] ... 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-ec7071eb-69ad-40b6-83e7-500d4b663ad5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image [0.048498s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_471_owner_member_can_patch_allocation [0.129732s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/ad960636-dc07-4912-a65e-0025ec437701 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-6f5b6fee-e6c0-4f0b-a590-667795039271 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "ad960636-dc07-4912-a65e-0025ec437701", "created_at": "2026-04-12T07:48:07.091782+00:00", "updated_at": "2026-04-12T07:48:07.143141+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/ad960636-dc07-4912-a65e-0025ec437701", "rel": "self"}, {"href": "http://localhost/allocations/ad960636-dc07-4912-a65e-0025ec437701", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled [0.050230s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image_fmt_checked [0.044726s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_035_nodes_management_boot_device_get_admin [0.070570s] ... 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-e0b47a05-8c3c-4456-bb6e-f4a47e17b5bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_remove_ports_from_network_not_all_pxe_enabled_all_ports [0.049182s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_image_fmt_not_checked [0.046122s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_472_lessee_member_can_patch_allocation [0.092366s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/0be5dd5a-a7d3-4131-877b-403a384e7724 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-a396ddca-b661-49c1-b76b-62d0f867242c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "0be5dd5a-a7d3-4131-877b-403a384e7724", "created_at": "2026-04-12T07:48:07.205003+00:00", "updated_at": "2026-04-12T07:48:07.236842+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/0be5dd5a-a7d3-4131-877b-403a384e7724", "rel": "self"}, {"href": "http://localhost/allocations/0be5dd5a-a7d3-4131-877b-403a384e7724", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports [0.043288s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_036_nodes_management_boot_device_get_member [0.070175s] ... 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-2a05c900-cd4d-4ac9-baeb-05352715e18d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_part_img_checked [0.046460s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_rollback_ports_exception [0.050608s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_473_third_party_admin_can_get_allocations [0.071204s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-308f544a-9682-43ad-ac85-c6ce4bcf02be X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"allocations": []} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_nonglance_partition_image [0.047545s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_down [0.029538s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_037_nodes_management_boot_device_get_observer [0.073616s] ... 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-7dc43609-0015-4d6c-8751-35eed1055d52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_validate_agent_up [0.028798s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_is_a_path [0.044783s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_474_third_party_admin_can_create_allocation [0.076478s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 503 Service Unavailable Content-Type: application/json Openstack-Request-Id: req-56bc3a38-f577-4662-a763-2f701e1912b3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_scoped_canary_038_nodes_management_boot_device_supported_get_admin [0.069091s] ... 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-3b8a415d-352a-47a6-935b-55ed112deacf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface [0.045579s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_redirect [0.046129s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForDeploy.test_build_instance_info_for_deploy_source_redirect_not_path [0.044427s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_flat_interface_with_client_id [0.048482s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_475_third_party_admin_cannot_create_allocation_with_owner_node [0.078696s] ... 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-e972f9f0-276a-4d50-9cf7-f0880743c5c2 X-Openstack-Ironic-Api-Maximum-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.TestRBACScoped.test_scoped_canary_039_nodes_management_boot_device_supported_get_member [0.073475s] ... 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-7e658752-2a43-454a-8421-5fa57724fac4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface [0.054055s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_already_raw [0.059704s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_476_third_party_admin_cannot_create_allocation_with_candidates_not_owned [0.080620s] ... 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-787ea150-b654-4269-89f2-5271e1d37fd2 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_040_nodes_management_boot_device_supported_get_observer [0.072687s] ... 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-ddfd4f4d-8c49-43d7-9d99-df42af952c43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_missed_info [0.052717s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_already_raw_keeps_md5 [0.059806s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_interface_with_client_id [0.048381s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_file_image [0.052642s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_477_owner_admin_can_create_allocation_with_their_uuid [0.081630s] ... 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-40761def-bb28-4184-889a-35ee93200318 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.TestRBACScoped.test_scoped_canary_041_nodes_management_inject_nmi_put_admin [0.084917s] ... 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-0b0a0188-1c09-47c0-836c-7dd6cec3dbe7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_network_type_unmanaged [0.048543s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw [0.060377s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_042_nodes_management_inject_nmi_put_member [0.066445s] ... 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-d7002893-3daf-4d8f-8088-cd9509557a00 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_no_smartnic_and_link_info [0.048529s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_478_owner_manager_can_create_allocation_with_their_uuid [0.086291s] ... 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-cca4295d-c7fb-4a62-9d28-e8aed00bc92d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_force_raw_drops_md5 [0.056428s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_link_info [0.049212s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_043_nodes_management_inject_nmi_put_observer [0.067480s] ... 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-8b5eb7c1-aab6-4c8a-a9e0-e3ac72218899 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_479_third_party_admin_cannot_read_an_allocation [0.070191s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/b3d07d20-5b4b-41a3-a86c-dbce57336575 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bcfbe7d4-a08d-4f7e-bc7e-0c4ccc99b7f7 X-Openstack-Ironic-Api-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 b3d07d20-5b4b-41a3-a86c-dbce57336575 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image [0.053851s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_validate_port_info_neutron_with_smartnic_and_no_link_info [0.048914s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups [0.029391s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_044_nodes_states_get_admin [0.065924s] ... 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-0dab4ce4-4170-4c35-8338-b729233d2fc8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_already_raw [0.052085s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_exception_by_neutronclient [0.030358s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_480_third_party_admin_cannot_patch_an_allocation [0.075169s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/e6589753-22d2-44a5-9c99-5fcc0c2c1f08 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-efc047e6-26a2-42e4-848d-0f18afa599b4 X-Openstack-Ironic-Api-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 e6589753-22d2-44a5-9c99-5fcc0c2c1f08 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_less_than_configured [0.031578s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_dinfo [0.052199s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_045_nodes_states_get_member [0.066968s] ... 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-9fbd776f-8fc4-4e9e-b4ef-f964c975cbf8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_more_than_configured [0.030469s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_481_third_party_admin_cannot_delete_an_allocation [0.069646s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/b279be8a-9bc2-45ab-a56e-127cab22c325 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-d0f8192a-2c44-4989-bcd3-11d5a6ec6217 X-Openstack-Ironic-Api-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 b279be8a-9bc2-45ab-a56e-127cab22c325 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_local_image_via_iinfo [0.052608s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_verify_sec_groups_no_sg_from_neutron [0.033193s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_down [0.034240s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_md5_not_permitted [0.054765s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_482_owner_reader_can_read_node_allocation [0.077475s] ... 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-b06ce057-21d6-46ab-9c56-08a2d055be60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "7688aa15-9c08-404a-800a-00ba3aa2839e", "created_at": "2026-04-12T07:48:07.987221+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/7688aa15-9c08-404a-800a-00ba3aa2839e", "rel": "self"}, {"href": "http://localhost/allocations/7688aa15-9c08-404a-800a-00ba3aa2839e", "rel": "bookmark"}], "node_uuid": "1ab63b9e-66d7-4cd7-8618-dddd0f9f7881"} {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_down_target_state_up [0.033167s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_down [0.031431s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_no_force_raw [0.058910s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_host_agent_up_target_state_up [0.031479s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_483_lessee_reader_can_read_node_allocation [0.076712s] ... 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-7dbb3a92-1bfe-48df-8500-38b43cbe6a2c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "52d030ec-7eb5-4a2f-82c8-dcd054be3036", "created_at": "2026-04-12T07:48:08.073417+00:00", "updated_at": "2026-04-12T07:48:08.074796+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/52d030ec-7eb5-4a2f-82c8-dcd054be3036", "rel": "self"}, {"href": "http://localhost/allocations/52d030ec-7eb5-4a2f-82c8-dcd054be3036", "rel": "bookmark"}], "node_uuid": "38d5abed-c585-4fce-a57e-a2ffc2a2ec6f"} {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_active_max_retry [0.031408s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_remote_checksum_image [0.055424s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down [0.031650s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_484_third_party_admin_cannot_read_node_allocation [0.068512s] ... 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-7323b182-b421-4c6c-8832-233fcd760d12 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_remote_checksum_sha256 [0.052432s] ... ok {2} ironic.tests.unit.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_down_max_retry [0.031991s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_046_nodes_states_get_observer [0.294354s] ... 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-9ce5d463-bbca-4132-9bee-a5ca0d97ed52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestNeutronNetworkActions.test_wait_for_port_status_up [0.031590s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_remote_checksum_sha512 [0.053752s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port [0.019494s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_485_owner_admin_can_delete_allocation [0.078892s] ... 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-d28c6823-7c67-463c-80eb-53662e828a88 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_neutron.TestUnbindPort.test_unbind_neutron_port_client_passed [0.018409s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_047_nodes_states_power_put_admin [0.072343s] ... 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-892d5e3f-8b97-41fa-8b5f-55ad58971c9e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_failure [0.023816s] ... ok {0} ironic.tests.unit.drivers.modules.test_deploy_utils.TestBuildInstanceInfoForHttpProvisioning.test_build_instance_info_remote_image_via_http_verified [0.050808s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUnbindPort.test_unbind_neutron_port_not_found [0.027228s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_amount_not_satisfied [0.022339s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_486_owner_manager_can_delete_allocation [0.075988s] ... 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-f8b272aa-2545-4be2-8552-eb9249581f3f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_neutron.TestUnbindPort.test_unbind_neutron_port_not_reset_mac [0.020468s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_cache_still_large [0.021562s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port [0.019676s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_048_nodes_states_power_put_member [0.075774s] ... 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-6d165c15-1e5a-42c6-814d-8130c8f1b9bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size [0.020034s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_client [0.019708s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_ensure_cache_size_with_amount [0.020689s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdateNeutronPort.test_update_neutron_port_with_exception [0.019187s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_files_with_links_untouched [0.020200s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_487_lessee_admin_can_delete_allocation [0.079150s] ... 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-ff2c77c3-6659-4541-9f54-aa814d817408 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_neutron.TestUpdatePortAddress.test_update_port_address [0.019360s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_deleted [0.020521s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_show_failed [0.019027s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_049_nodes_states_power_put_observer [0.080149s] ... 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-8162250a-93df-4246-a938-b7aa5a9543c5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_clean_up_old_with_amount [0.020295s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_unbind_port_failed [0.020224s] ... ok {2} ironic.tests.unit.common.test_neutron.TestUpdatePortAddress.test_update_port_address_with_binding [0.020221s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_488_lessee_manager_not_delete_allocation [0.077483s] ... 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-01300b21-1ef0-48d3-b8f6-da2d8eb0592d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-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_neutron.TestUpdatePortAddress.test_update_port_address_with_exception [0.019948s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_050_nodes_states_boot_mode_put_admin [0.073306s] ... 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-f19fa611-804e-4e56-9d2a-b3ece8593658 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestUpdatePortAddress.test_update_port_address_without_binding [0.019793s] ... ok {2} ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_name [0.019213s] ... ok {2} ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_by_uuid [0.019259s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_489_third_party_admin_cannot_delete_allocation [0.077171s] ... 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-faeb22ab-b9f2-47d0-bdf4-b63956f316f9 X-Openstack-Ironic-Api-Maximum-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_neutron.TestValidateNetwork.test_duplicate [0.020103s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_051_nodes_states_boot_mode_put_member [0.071186s] ... 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-2e533d67-1f84-48a2-8c30-cc726cd54a0c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_neutron.TestValidateNetwork.test_failure [0.020081s] ... ok {2} ironic.tests.unit.common.test_neutron.TestValidateNetwork.test_not_found [0.018814s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_490_owner_reader_cannot_get_deploy_templates [0.068832s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-be871943-ef5a-46a7-9fbd-f11d049c4f24 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_nova.NovaApiTestCase.test_invalid_power_update [0.024736s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_052_nodes_states_boot_mode_put_observer [0.065855s] ... 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-e66b00ae-c1db-4f5e-870f-1657ddefc8d4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_cleanup_ordering [0.218999s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_1 [0.024465s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_dir_exception [0.020454s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_2 [0.023188s] ... ok {0} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheCleanUp.test_temp_images_not_cleaned [0.020445s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_491_lessee_reader_cannot_get_deploy_templates [0.073693s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-67e9f7bc-96f6-4859-aa5b-4ef4da6ae42d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_053_nodes_states_secure_boot_put_admin [0.067477s] ... 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-e4632b48-7b3f-4f22-9fc2-ad1c63f07691 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc [0.043324s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_492_third_party_admin_cannot_get_deploy_templates [0.066555s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ae2f7b69-a00a-4ebe-85ab-e3470c84ddef X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_054_nodes_states_secure_boot_put_member [0.066473s] ... 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-bc4e33f3-a1e1-46b2-b8ac-f20223843438 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_and_mac [0.046093s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_and_mac_and_uuid [0.044714s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_493_third_party_admin_cannot_post_deploy_template [0.071078s] ... 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-7a5659d8-e74a-4e89-83bd-f4de3911769f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_055_nodes_states_secure_boot_put_observer [0.067381s] ... 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-53f25ca9-67fe-41f9-a75a-a1d233f0024f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_and_mac_not_found [0.042480s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_494_service_cannot_get_deploy_templates [0.063831s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-de6dfa7f-d75e-43b2-bf52-6d7ad5ce3afd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_056_nodes_states_provision_put_admin [0.066394s] ... 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-e1818f27-6d2b-4d54-b6ad-b8a7da9f9a70 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_not_found [0.040974s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_3 [0.241949s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_4 [0.027870s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_bmc_wrong_state [0.045370s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_5 [0.024906s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_057_nodes_states_provision_put_member [0.070638s] ... 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-9e60de20-d549-4655-bd87-e47fdee613c0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_495_service_cannot_post_deploy_template [0.078643s] ... 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-2bc1ca3f-bdcf-4e7e-958d-3340f84a7752 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_nova.NovaApiTestCase.test_power_update_failed [0.026513s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_mac_not_found [0.039335s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova [0.025127s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_mac_wrong_state [0.043840s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_failed_no_nova_auth_url [0.025697s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_496_owner_reader_cannot_access_chassis [0.067272s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-9a7d78ea-3296-47bb-a3b2-68b16a464766 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_058_nodes_states_provision_put_observer [0.074369s] ... 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-4575c28d-b670-48f8-a4b0-b4d95788a885 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_1 [0.024378s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_macs [0.039941s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_2 [0.026015s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_497_lessee_reader_cannot_access_chassis [0.066986s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-6f3711f7-0dea-42e2-bf29-70b2dd3b8ffa X-Openstack-Ironic-Api-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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_macs_partial [0.039058s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_059_nodes_states_raid_put_admin [0.070257s] ... 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-1d0936a7-b400-4bad-b465-47d85abfdca3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_3 [0.027055s] ... ok {2} ironic.tests.unit.common.test_nova.NovaApiTestCase.test_power_update_invalid_reponse_format_4 [0.024682s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_unknown_bmc_and_mac [0.043677s] ... ok {2} ironic.tests.unit.common.test_nova.TestNovaAdapter.test_get_nova_adapter [0.020176s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_498_third_party_admin_cannot_access_chassis [0.068507s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-13572d7d-d038-422c-8087-24afdf772c49 X-Openstack-Ironic-Api-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.common.test_policy.PolicyTestCase.test_authorize_access_forbidden [0.020340s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_060_nodes_states_raid_put_member [0.070348s] ... 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-81ecd06e-3158-42ab-9597-ecaa841ba29e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_uuid [0.040043s] ... ok {2} ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_passes [0.020052s] ... ok {2} ironic.tests.unit.common.test_policy.PolicyTestCase.test_authorize_policy_not_registered [0.017929s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_uuid_and_unknown_macs [0.040532s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_499_third_party_admin_cannot_create_chassis [0.070990s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c1630f19-73c0-404c-93f9-f44b92c07e91 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_061_nodes_states_raid_put_observer [0.069424s] ... 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-0670e1a8-62d7-4916-b2f9-cb0b46ed1cb8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_config_file [0.037366s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_uuid_not_found [0.038704s] ... ok {2} ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_namespace [0.038217s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_500_service_cannot_access_chassis [0.066707s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-e0a405c6-8298-4bda-8209-43db6e15f3b1 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_062_nodes_states_console_get_admin [0.069578s] ... 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-5424f897-1e0b-4643-b03c-6dc619e6a80b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_by_uuid_wrong_state [0.047494s] ... ok {2} ironic.tests.unit.common.test_policy.PolicyTestCase.test_get_oslo_policy_enforcer_no_args [0.039070s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_conflicting_bmc_and_uuid [0.042626s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe [0.041018s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_501_service_cannot_create_chassis [0.070676s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-cb1112bd-e3d6-49af-bb6d-f27b66705388 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_063_nodes_states_console_get_member [0.070230s] ... 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-bf0b9772-5c1d-41a5-a37f-651042fd7d83 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_conflicting_macs [0.040916s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_insecure_heartbeat [0.038273s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_conflicting_macs_and_bmc [0.040839s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_build_kickstart_config_options_pxe_source_path [0.044651s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_064_nodes_states_console_put_admin [0.069189s] ... 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-000ca4c2-cefd-4dc0-a16a-e71fc5e7823d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config [0.035444s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_conflicting_macs_and_uuid [0.041668s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_prepare_instance_kickstart_config_not_anaconda_boot [0.034108s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_065_nodes_states_console_put_member [0.067967s] ... 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-e990a644-fe3e-4f45-9685-4e0f7ce970fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_duplicate_bmc [0.041024s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template [0.029445s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_has_additional_variables [0.028253s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.PXEBuildKickstartConfigOptionsTestCase.test_validate_kickstart_template_missing_variable [0.026149s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_with_master_path [0.021470s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_duplicate_bmc_and_unknown_mac [0.097872s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TFTPImageCacheTestCase.test_without_master_path [0.023074s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_502_node_history_get_admin [0.284127s] ... 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-bde8fddf-690a-4656-b321-117bb91edec4 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": "540f2b7d-2176-45a9-9ecc-e42adda611a5", "created_at": "2026-04-12T07:48:09.460874+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/540f2b7d-2176-45a9-9ecc-e42adda611a5", "rel": "self"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_066_nodes_states_console_put_observer [0.146211s] ... 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-89fc5695-ad07-48ca-89e0-7cc28b7bca91 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_default_noop [0.024408s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_no_source [0.024983s] ... ok {0} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_duplicate_bmc_resolved_by_macs [0.085531s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_raises_exception_with_absolute_path [0.025096s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_503_node_history_get_member [0.076877s] ... 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-83290952-cee8-41f3-a1eb-ff82db6b837b 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": "e5c10f2b-167e-4d30-be3e-c89a9e20403c", "created_at": "2026-04-12T07:48:09.744114+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/e5c10f2b-167e-4d30-be3e-c89a9e20403c", "rel": "self"}]}]} {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files [0.026197s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_chmod [0.025743s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_067_nodes_vendor_passthru_methods_get_admin [0.126868s] ... 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-0b436876-3888-4bdd-89ea-e0cdb5e05d1b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_inspect_utils.LookupNodeTestCase.test_no_input [0.086687s] ... ok {2} ironic.tests.unit.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_exception_on_copy [0.046782s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_504_node_history_get_reader [0.083199s] ... 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-2ca9d274-54d4-400e-9b30-455dc77d2f69 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": "d3307bd4-1325-4a80-b2ad-cfa836ed9aca", "created_at": "2026-04-12T07:48:09.822100+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/d3307bd4-1325-4a80-b2ad-cfa836ed9aca", "rel": "self"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_068_nodes_vendor_passthru_methods_get_member [0.062611s] ... 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-4b2a7b3d-a84f-4ee1-8c87-03cb5a400ba2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_pxe_utils.TestPXEUtilsBootloader.test_place_loaders_for_boot_two_files_relative_path [0.057868s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__exec_stop_console [0.089788s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_505_node_history_get_service [0.077196s] ... 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-4fb7745b-9d1d-4f46-903c-3b8770496b1c 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": "85eef37b-8b57-4b5e-9773-0ed0510191a2", "created_at": "2026-04-12T07:48:09.905494+00:00", "severity": "ERROR", "event": "Something is wrong", "links": [{"href": "http://localhost/v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/85eef37b-8b57-4b5e-9773-0ed0510191a2", "rel": "self"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_069_nodes_vendor_passthru_methods_get_observer [0.062226s] ... 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-f22cf461-0ab1-4b9e-a176-8a9d13974b37 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config [0.053199s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__get_ipmi_cmd [0.082045s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_506_node_history_get_service_cannot_be_retrieved [0.071902s] ... 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-286eed4d-b116-4414-9b73-69d6fa1f08f4 X-Openstack-Ironic-Api-Maximum-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.TestRBACScoped.test_scoped_canary_070_nodes_vendor_passthru_get_admin [0.062176s] ... 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-f28d0c80-1a32-4ee4-bb80-09c76fbfd62e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_empty_target_raid_config [0.067803s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_071_nodes_vendor_passthru_get_member [0.064427s] ... 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-ca7c73f5-fe4a-4191-bf90-9df7f1e67fc3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_507_node_history_get_entry_admin [0.071444s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/dcb5f975-6b53-49a5-90cd-4ef21be76f19 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8ef5a293-3b0e-44e9-87a8-f188df23e823 X-Openstack-Ironic-Api-Maximum-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_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_no_target_raid_config_after_skipping [0.051412s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__get_ipmi_cmd_without_user [0.092433s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_nonroot [0.054718s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_072_nodes_vendor_passthru_get_observer [0.062556s] ... 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-975d88f8-264a-45cb-820c-9bb52a6d031d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_508_node_history_get_entry_member [0.076566s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/1e178413-59c4-426f-ac3d-0e7886164d7c WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-ad37f3d2-ff76-4792-9599-91699e04e554 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1e178413-59c4-426f-ac3d-0e7886164d7c", "created_at": "2026-04-12T07:48:10.130618+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/1e178413-59c4-426f-ac3d-0e7886164d7c", "rel": "self"}]} {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console [0.088877s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_filter_target_raid_config_skip_root [0.048409s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_073_nodes_vendor_passthru_post_admin [0.071766s] ... 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-be897f26-09ac-4e50-a007-bf239ff9c519 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties [0.029229s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_empty_password [0.048636s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_get_logical_disk_properties_custom_schema [0.028461s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_fail [0.043167s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_multiple_root_volumes [0.033605s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_509_node_history_get_entry_reader [0.133032s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/1e544367-a0cb-4396-bf68-ca0a45b8759b WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d498226b-e9c9-4d04-8609-96ec1d9c3e7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "1e544367-a0cb-4396-bf68-ca0a45b8759b", "created_at": "2026-04-12T07:48:10.234216+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/1e544367-a0cb-4396-bf68-ca0a45b8759b", "rel": "self"}]} {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test__start_console_fail_nodir [0.044306s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay [0.038520s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate [0.033022s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_074_nodes_vendor_passthru_post_member [0.143357s] ... 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-a0b19a5e-32b9-4a81-a2c5-3f78b92dcc4e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_current_capabilities_empty [0.038860s] ... ok {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_okay_no_root_volumes [0.037634s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_invalid_port [0.046809s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_075_nodes_vendor_passthru_post_observer [0.072744s] ... 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-0440ff97-7e37-40ea-9dfb-5bfe3dc86de0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_510_lessee_node_history_get_admin [0.149297s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/a0fcf5d1-a668-4480-abd0-11c012684cdb/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-04146f1d-6769-4928-bde3-ba2dbf690a99 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node a0fcf5d1-a668-4480-abd0-11c012684cdb could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_raid.RaidPublicMethodsTestCase.test_update_raid_info_skip_MAX [0.038380s] ... ok {2} ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions [0.018939s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_missing_port [0.075690s] ... ok {2} ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_objects [0.018973s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_076_nodes_vendor_passthru_put_admin [0.062835s] ... 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-896bf6b9-2eca-4609-b1a7-1b30c0deb3cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases [0.022507s] ... ok {2} ironic.tests.unit.common.test_release_mappings.GetObjectVersionsTestCase.test_get_object_versions_releases_objects [0.022404s] ... ok {2} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_contains_all_db_objects [0.019643s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_missing_port_auto_allocate [0.066251s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_077_nodes_vendor_passthru_put_member [0.063603s] ... 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-838ce2fc-03d6-461e-bafc-54549aa3bd62 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_release_mappings.ReleaseMappingsTestCase.test_current_object_versions [0.019589s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_511_lessee_node_history_get_member [0.143984s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/4e9055a9-68e4-40d8-b821-18b628587227/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-2bbe9a6b-1ec6-4d35-97c3-bff15391a9fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 4e9055a9-68e4-40d8-b821-18b628587227 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_current_rpc_version [0.019234s] ... ok {2} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_no_gaps_in_object_versions [0.019078s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_console_validate_wrong_ipmi_protocol_version [0.073101s] ... ok {2} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_object_names_are_registered [0.019970s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_512_lessee_node_history_get_reader [0.064746s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/a19d02c8-0c74-45b9-9749-768a9cc551cd/history WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-a70a8dd2-5bb1-4fc3-8ed2-8690d2effb52 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node a19d02c8-0c74-45b9-9749-768a9cc551cd could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_release_mappings.ReleaseMappingsTestCase.test_rpc_and_objects_versions_supported [0.023040s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_078_nodes_vendor_passthru_put_observer [0.107830s] ... 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-9db7d75b-0f40-4bdf-bff1-6b46fd604827 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_release_mappings.ReleaseMappingsTestCase.test_structure [0.024161s] ... ok {2} ironic.tests.unit.common.test_states.StatesTest.test_state_values_length [0.019106s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_get_console [0.082779s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_513_lessee_node_history_get_entry_admin [0.069182s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/f4d061f2-e628-4b36-a823-0d53a8250976/history/f24445b6-007c-4689-9fad-a6ef62a5ca3c WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-6c9d6316-3542-47d7-aaf9-0e39354eaacc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node f4d061f2-e628-4b36-a823-0d53a8250976 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link [0.020491s] ... ok {2} ironic.tests.unit.common.test_utils.BareMetalUtilsTestCase.test_create_link_EEXIST [0.021405s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object [0.029361s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test__get_hash_object_throws_for_invalid_or_unsupported_hash_name [0.020453s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_514_lessee_history_get_entry_member [0.082648s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/fd0475a0-79a6-47a9-89e8-e892d7db5116/history/0b8892a4-f837-453e-8307-fdf759c24858 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-1a38dcf7-ab6b-40a0-929e-e34da74c864e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node fd0475a0-79a6-47a9-89e8-e892d7db5116 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console [0.091669s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_079_nodes_vendor_passthru_delete_admin [0.138594s] ... 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-e694e302-0750-4182-ac52-805ae0b62287 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_utils.GenericUtilsTestCase.test_file_has_content_differ [0.025060s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal [0.021825s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_file_has_content_equal_not_binary [0.021270s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_515_lessee_node_history_get_entry_reader [0.069592s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/235cad2a-5fd0-45af-ae46-03ce4ef20a7a/history/30b435da-6168-46c1-b68a-fb11f3751f64 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-368ed9aa-19be-4683-88e8-1f69bac6c5ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 235cad2a-5fd0-45af-ae46-03ce4ef20a7a could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_fips_enabled [0.028029s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_hostname_safe [0.020097s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console_alloc_port [0.118797s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_080_nodes_vendor_passthru_delete_member [0.138655s] ... 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-f92de94a-ff1c-40c6-bf11-3d08b9f88ce7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_516_owner_service_node_history_get_entry_reader [0.070559s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/e447d5bd-d899-4280-a527-43892224115e WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-7cdd712b-bf11-46b6-a782-244533527e06 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "e447d5bd-d899-4280-a527-43892224115e", "created_at": "2026-04-12T07:48:10.924199+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/e447d5bd-d899-4280-a527-43892224115e", "rel": "self"}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_081_nodes_vendor_passthru_delete_observer [0.062674s] ... 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-f3c6bb15-7631-47a5-8690-2043c6630dcc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_start_console_with_port [0.098646s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_stop_console [0.060591s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_517_third_party_admin_cannot_get_node_history [0.147731s] ... 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-86a68eea-12d8-48fa-b1c4-4ed969dafbe6 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.test_ipmitool.IPMIToolShellinaboxTestCase.test_stop_console_fail [0.039218s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipxe.iPXEHttpBootTestCase.test_http_boot_enabled [0.036960s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_datapath_id [0.301864s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipxe.iPXEHttpBootTestCase.test_prepare_ramdisk [0.074580s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_is_valid_logical_name [0.019771s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_518_node_history_get_entry_service [0.152550s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1ab63b9e-66d7-4cd7-8618-dddd0f9f7881/history/8983d636-3f25-4e01-b901-582052d92f1f WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-cfee5b12-952e-4e91-baa3-cbf6808c549e X-Openstack-Ironic-Api-Maximum-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_utils.GenericUtilsTestCase.test_is_valid_no_proxy [0.019110s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_082_nodes_traits_get_admin [0.263939s] ... 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-0f9ea481-183f-40d6-a8f2-577c1bdb4327 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_utils.GenericUtilsTestCase.test_safe_rstrip [0.018958s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_safe_rstrip_not_raises_exceptions [0.018532s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipxe.iPXEHttpBootTestCase.test_prepare_ramdisk_rescue [0.071709s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_unix_file_modification_datetime [0.019477s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_datapath_id [0.018947s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_083_nodes_traits_get_member [0.065814s] ... 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-cf778948-420c-44a2-b433-02a4d6f2760e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_519_node_inventory_get_admin [0.097934s] ... 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-8fcf9e9c-402d-4a22-8b3d-80143665b6ab 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.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac [0.027467s] ... ok {0} ironic.tests.unit.drivers.modules.test_ipxe.iPXEHttpBootTestCase.test_prepare_ramdisk_uefi [0.071723s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_validate_and_normalize_mac_invalid_format [0.019714s] ... ok {0} ironic.tests.unit.drivers.modules.test_noop_mgmt.TestNoopManagement.test_dummy_methods [0.020193s] ... ok {2} ironic.tests.unit.common.test_utils.GenericUtilsTestCase.test_wrap_ipv6 [0.018019s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_084_nodes_traits_get_observer [0.068730s] ... 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-3f9cb7ca-e336-49ab-b63e-566064fe6d3a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_noop_mgmt.TestNoopManagement.test_set_boot_device [0.019858s] ... ok {2} ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_file [0.023696s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_520_node_inventory_get_member [0.089541s] ... 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-1e436b5d-7cee-4468-8d50-a00cd4a87ad3 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.common.test_utils.JinjaTemplatingTestCase.test_render_string [0.018953s] ... ok {0} ironic.tests.unit.drivers.modules.test_pxe.HttpBootTestCase.test_http_boot_enabled [0.035863s] ... ok {2} ironic.tests.unit.common.test_utils.JinjaTemplatingTestCase.test_render_with_quotes [0.020232s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_085_nodes_traits_put_admin [0.070326s] ... 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-d299c8cf-94e3-494e-9e1c-3af5b4943deb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_wsgi_service.TestWSGIService.test_workers_set_correct_setting [0.033376s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_521_node_inventory_get_reader [0.077729s] ... 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-903ba07c-e33f-4599-8d46-991764faf1cd 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.common.test_wsgi_service.TestWSGIService.test_workers_set_default [0.030070s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_086_nodes_traits_put_member [0.068322s] ... 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-01ff1340-28c5-412f-8a97-2f5202cc1b22 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_wsgi_service.TestWSGIService.test_workers_set_default_limit [0.032182s] ... ok {2} ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_workers_set_negative_setting [0.030954s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_522_lessee_node_inventory_get_admin [0.076692s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/f6fe88f3-e0c5-4cbf-8d79-f56783510b00/inventory WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-568af311-db5a-4da5-a47c-4eaa1f570332 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node f6fe88f3-e0c5-4cbf-8d79-f56783510b00 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_087_nodes_traits_put_observer [0.067956s] ... 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-7392b75f-6502-4527-8cbb-04b7f609273d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_wsgi_service.TestWSGIService.test_workers_set_zero_setting [0.035272s] ... ok {2} ironic.tests.unit.common.test_wsgi_service.TestWSGIService.test_wsgi_service_with_ssl_enabled [0.031646s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_523_lessee_node_inventory_get_member [0.074897s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/0fd16cfd-b517-4362-ab0b-49ce203bc1f7/inventory WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-db61dc74-fc7b-44e3-976a-9d5f735acecf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node 0fd16cfd-b517-4362-ab0b-49ce203bc1f7 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_088_nodes_traits_delete_admin [0.061898s] ... 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-d84da4c4-24b8-4f85-9c89-a98807dc1776 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_pxe.HttpBootTestCase.test_prepare_ramdisk [0.263957s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_089_nodes_traits_delete_member [0.062463s] ... 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-affbad00-643b-486f-bc04-eca7ac287220 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_allocations.AllocationTestCase.test_check_orphaned_allocations [0.084593s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_524_lessee_node_inventory_get_reader [0.076120s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/b69eeb41-c0a5-4670-b594-47dcb0d258d0/inventory WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e45427ef-df3a-4b5b-9d98-12f1e561eb43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"error_message": "{\"faultcode\": \"Client\", \"faultstring\": \"Node b69eeb41-c0a5-4670-b594-47dcb0d258d0 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.drivers.modules.test_pxe.HttpBootTestCase.test_prepare_ramdisk_rescue [0.066551s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_090_nodes_traits_delete_observer [0.062799s] ... 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-a27cf361-6c41-4e79-b2bb-3d9f45a6f493 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_allocations.AllocationTestCase.test_create_allocation [0.069911s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_525_shard_get_shards_disallowed [0.068467s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/shards WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-544e592f-5be4-4b78-9d42-82e42a5e6a9f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_pxe.HttpBootTestCase.test_prepare_ramdisk_uefi [0.068570s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_091_nodes_traits_trait_put_admin [0.069259s] ... 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-5f13b8e9-f1d6-4976-9cf2-f2ed6f34512f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_off [0.024682s] ... ok {2} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_create_allocation_with_node_id [0.068398s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_on [0.022400s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_526_shard_patch_set_node_shard_disallowed [0.076838s] ... 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-2a1a352a-705e-4f08-b218-a28f94832ebc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_reset [0.022559s] ... ok {2} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_active_node [0.049034s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_092_nodes_traits_trait_put_member [0.067645s] ... 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-0689d4f9-15df-4f3b-baea-c47d7e7029fe X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_state_off [0.021938s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_power_state_on [0.021251s] ... ok {2} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node [0.053297s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitch_snmp_objects [0.022801s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_527_parent_node_patch_by_admin [0.085569s] ... 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-b2ad8651-d1d6-44a0-8ba0-fa8c96331e51 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_093_nodes_traits_trait_put_observer [0.067180s] ... 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-a366109c-3458-4589-93a5-83e2804c0452 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_off [0.022830s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_on [0.023434s] ... ok {2} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_with_node_in_maintenance [0.050463s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_reset [0.021792s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_094_nodes_traits_trait_delete_admin [0.061887s] ... 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-fbbfdd21-c159-4bc3-9613-dc75f3d75272 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_state_off [0.021435s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_528_parent_node_patch_by_member [0.085913s] ... 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-2a043d83-b826-4af1-ac8f-b2a9b14c553c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_allocations.AllocationTestCase.test_destroy_allocation_with_transient_node [0.049622s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_power_state_on [0.020983s] ... ok {2} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_destroy_allocation_without_node [0.028392s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_masterswitchplus_snmp_objects [0.020625s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_095_nodes_traits_trait_delete_member [0.063250s] ... 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-42d7c171-1f68-4ec4-9b2d-b8f86d9d8287 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_off [0.021663s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_on [0.021699s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_529_parent_node_patch_by_reader [0.082254s] ... 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-7031e634-f49a-4389-985f-21d3eb4b31d6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_reset [0.022087s] ... ok {2} ironic.tests.unit.conductor.test_allocations.AllocationTestCase.test_resume_allocations [0.070319s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_096_nodes_traits_trait_delete_observer [0.063638s] ... 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-2fcc5ec9-3d1a-46d6-a17f-2707ecaaac32 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_state_off [0.023246s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_power_state_on [0.024569s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_530_parent_node_patch_by_manager [0.084560s] ... 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-b80e8580-95df-4b5c-bb06-636978984736 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_off [0.021865s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_097_nodes_vifs_get_admin [0.068035s] ... 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-29964e40-16de-4254-b58a-adbea2a741f4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_on [0.021845s] ... ok {2} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_automated_clean [0.102924s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_reset [0.022558s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_state_off [0.021682s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_531_parent_node_patch_by_cannot_see_node [0.073018s] ... 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-390fd10b-2e33-4067-8539-eb54fd01e52e X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_098_nodes_vifs_get_member [0.064399s] ... 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-fda30219-98bf-42ff-82bc-2c7f00a07ec6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_power_state_on [0.021342s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_rackpdu_snmp_objects [0.020854s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_apc_snmp_objects [0.021646s] ... ok {2} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_boot_timeout [0.096533s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_099_nodes_vifs_get_observer [0.066773s] ... 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-db4bc5ec-e22b-4b00-9930-5d7a6bf89270 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_off [0.022809s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_532_parent_node_children_can_get_list_of_children [0.086458s] ... 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-e266e0c5-294b-41d4-a5f9-e11841388de5 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"}} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_on [0.023436s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_reset [0.023059s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_100_nodes_vifs_post_admin [0.069037s] ... 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-2d4923c5-6884-4772-a875-e5a282851a47 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_state_off [0.021844s] ... ok {2} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test__check_cleanwait_timeouts_manual_clean [0.096414s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_533_lessee_cannot_get_a_nodes_children [0.076329s] ... 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-751f8d04-cce1-476d-9567-0a63529ca329 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_power_state_on [0.020890s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_aten_snmp_objects [0.020887s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_101_nodes_vifs_post_member [0.066699s] ... 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-94dec413-16bd-4dbb-869d-3c3d78852bed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_off [0.024073s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_on [0.024387s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_534_owner_reader_can_get_firmware_components [0.073841s] ... 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-adb0eaa1-4f1b-4736-990f-d7c613372377 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_manager.CheckTimeoutsTestCase.test__check_deploy_timeouts [0.100708s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_on_cached_driver [0.023237s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_102_nodes_vifs_post_observer [0.065773s] ... 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-2e278995-8724-4d04-b8e4-d920fa0b3ab1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_reset [0.025211s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_off [0.024633s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_on [0.023727s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_103_nodes_vifs_node_vif_ident_delete_admin [0.073320s] ... 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-59249ea0-abe1-4fd8-98e7-7107d2d5c712 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_pdu_discovery_failure [0.021405s] ... ok {2} ironic.tests.unit.conductor.test_manager.CheckTimeoutsTestCase.test_check_rescuewait_timeouts [0.101269s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_auto_power_state_unknown_pdu [0.021255s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_off [0.022029s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_104_nodes_vifs_node_vif_ident_delete_member [0.065924s] ... 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-034c9ef4-4ae8-4b6d-bf76-6b610d12961e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_on [0.023823s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_boot_validate_failure [0.087394s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_reset [0.025227s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_snmp_objects [0.023034s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_105_nodes_vifs_node_vif_ident_delete_observer [0.065381s] ... 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-865c6699-1f29-4425-85d6-35915f1db1ba X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_state_off [0.025668s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_baytech_mrp27_power_state_on [0.026232s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_535_lessee_reader_can_get_firmware_components [0.286270s] ... 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-0d783fce-603a-4a9a-b7aa-8de55c27ea0a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"firmware": []} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_106_nodes_management_indicators_get_admin [0.067614s] ... 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-1ddbf679-3bee-448b-8bad-e366030ef639 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_manager.DoNodeAdoptionTestCase.test__do_adoption_ramdisk_deploy [0.098135s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_off [0.023481s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_on [0.022859s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_reset [0.022578s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_536_third_party_admin_cannot_get_firmware_components [0.071035s] ... 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-bdfd88ed-2c4d-4e0f-a660-a6f6118dbd40 X-Openstack-Ironic-Api-Maximum-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.TestRBACScoped.test_scoped_canary_107_nodes_management_indicators_get_member [0.064771s] ... 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-b8b2fe04-4519-41ca-b368-4101f03b1449 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_state_off [0.021104s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_take_over_failure [0.086663s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_power_state_on [0.021170s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_cyberpower_snmp_objects [0.020440s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_108_nodes_management_indicators_get_observer [0.064463s] ... 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-480773d7-c8fc-458f-afa5-c5c5aa4538d0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_off [0.021806s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_537_service_can_get_firmware_components_owner_project [0.077546s] ... 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-b157160d-5c69-4a2b-a67e-eba16d0cda10 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"firmware": []} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_on [0.034539s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test__do_adoption_with_takeover [0.088310s] ... ok {1} 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. {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_reset [0.023819s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_538_service_cannot_get_firmware_components [0.070247s] ... 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-99dd4c0b-e40e-4edb-872b-7cd56750efd1 X-Openstack-Ironic-Api-Maximum-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_off [0.022107s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_on [0.021298s] ... ok {1} 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. {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_pending_off [0.020872s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_power_state_pending_on [0.022163s] ... ok {1} 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. {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_539_runbooks_post_admin [0.084905s] ... 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/4ff830a3-ff6d-43ae-b3d4-91b4ba6be0c3 Openstack-Request-Id: req-8d543f6b-871a-42d3-a31d-0ff6448fa682 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "4ff830a3-ff6d-43ae-b3d4-91b4ba6be0c3", "created_at": "2026-04-12T07:48:13.186604+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/4ff830a3-ff6d-43ae-b3d4-91b4ba6be0c3", "rel": "self"}, {"href": "http://localhost/runbooks/4ff830a3-ff6d-43ae-b3d4-91b4ba6be0c3", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_eaton_power_snmp_objects [0.023550s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off [0.025236s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_112_portgroups_get_admin [0.061815s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-51996b1c-fe10-423e-adb8-869f7108004a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_delay [0.024490s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_invalid_state [0.025252s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_540_runbooks_post_manager [0.085685s] ... 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/8a2f424f-10ff-4a4b-8a6e-f2313598a474 Openstack-Request-Id: req-cf7657d3-259c-4df3-af96-3cdb3f813198 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8a2f424f-10ff-4a4b-8a6e-f2313598a474", "created_at": "2026-04-12T07:48:13.275758+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/8a2f424f-10ff-4a4b-8a6e-f2313598a474", "rel": "self"}, {"href": "http://localhost/runbooks/8a2f424f-10ff-4a4b-8a6e-f2313598a474", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_snmp_get_failure [0.023832s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_113_portgroups_get_member [0.067434s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ea85c3a1-1d73-4f35-ad04-ff617ef108e4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_snmp_set_failure [0.022862s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_off_timeout [0.023877s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_541_service_post_runbook [0.077936s] ... 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/f4d0c9fc-bc8b-4f81-8640-7da73183d763 Openstack-Request-Id: req-5bd53066-79cd-4128-a63a-01b30767da30 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "f4d0c9fc-bc8b-4f81-8640-7da73183d763", "created_at": "2026-04-12T07:48:13.358049+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/f4d0c9fc-bc8b-4f81-8640-7da73183d763", "rel": "self"}, {"href": "http://localhost/runbooks/f4d0c9fc-bc8b-4f81-8640-7da73183d763", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node [0.295802s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_114_portgroups_get_observer [0.061869s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ff5b4180-9bc5-48d2-af7e-00c04c18c33f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_542_third_party_admin_post_runbook [0.074789s] ... 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/8588b07f-0a42-4451-9be1-22e6f0d52f9c Openstack-Request-Id: req-7347ac3a-4068-40c5-bd04-f318f362b658 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "8588b07f-0a42-4451-9be1-22e6f0d52f9c", "created_at": "2026-04-12T07:48:13.435345+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/8588b07f-0a42-4451-9be1-22e6f0d52f9c", "rel": "self"}, {"href": "http://localhost/runbooks/8588b07f-0a42-4451-9be1-22e6f0d52f9c", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "noop", "args": {}, "order": 0}]} {2} ironic.tests.unit.conductor.test_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_adopt_node_retry [0.078910s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_115_portgroups_post_admin [0.069263s] ... 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-9e8a8909-1e78-49f8-b9f9-ef750560a05c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_scoped_canary_116_portgroups_post_member [0.065429s] ... 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-42e3b58c-737e-4263-9fe0-53f40c5e5048 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_543_runbooks_post_public_admin [0.071933s] ... 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-35fc68c5-1fc4-4ec1-b61c-270e29bcac59 X-Openstack-Ironic-Api-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_manager.DoNodeAdoptionTestCase.test_do_provisioning_action_manage_of_failed_adoption [0.081440s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on [0.229482s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_117_portgroups_post_observer [0.071736s] ... 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-c9218418-5afd-4da3-9787-48ef486bc4dd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_544_runbooks_post_public_service [0.075509s] ... 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-51f3f009-82c0-4f3f-932e-6ccc835a6437 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_delay [0.027569s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service [0.084890s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_invalid_state [0.026168s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_snmp_get_failure [0.024900s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_118_portgroups_detail_get_admin [0.069218s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b08bad17-49cc-4867-8618-ee9af25db16d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_snmp_set_failure [0.024174s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_545_runbooks_patch_admin [0.095725s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/2bf3c20e-6a97-4375-95a6-cfbc8e3bc7b8 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-9c2eff93-1393-4db2-b447-39545f91693b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2bf3c20e-6a97-4375-95a6-cfbc8e3bc7b8", "created_at": "2026-04-12T07:48:13.624226+00:00", "updated_at": "2026-04-12T07:48:13.682109+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/2bf3c20e-6a97-4375-95a6-cfbc8e3bc7b8", "rel": "self"}, {"href": "http://localhost/runbooks/2bf3c20e-6a97-4375-95a6-cfbc8e3bc7b8", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_on_timeout [0.025140s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_abort [0.095755s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset [0.026674s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_delay_option [0.025545s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_delay [0.022903s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_546_runbooks_patch_manager [0.096463s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/6a62a615-1199-494c-bf5c-ed60ace30a90 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-71750372-4c8f-43c9-86d5-87870906417d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "6a62a615-1199-494c-bf5c-ed60ace30a90", "created_at": "2026-04-12T07:48:13.723962+00:00", "updated_at": "2026-04-12T07:48:13.779950+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/6a62a615-1199-494c-bf5c-ed60ace30a90", "rel": "self"}, {"href": "http://localhost/runbooks/6a62a615-1199-494c-bf5c-ed60ace30a90", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_delay_on_delay [0.023690s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_abort_last_service_step [0.097861s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_invalid_state [0.025040s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_snmp_get_failure [0.023642s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_snmp_set_failure [0.024169s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_547_service_patch_runbook [0.094821s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/2d67c9a8-df97-4b21-83a4-d330abeaff12 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-5315ec59-2719-4ec7-9226-724957c34474 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "2d67c9a8-df97-4b21-83a4-d330abeaff12", "created_at": "2026-04-12T07:48:13.820082+00:00", "updated_at": "2026-04-12T07:48:13.875998+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/2d67c9a8-df97-4b21-83a4-d330abeaff12", "rel": "self"}, {"href": "http://localhost/runbooks/2d67c9a8-df97-4b21-83a4-d330abeaff12", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {2} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_locked [0.079377s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_off_timeout [0.024937s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_delay [0.022373s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_119_portgroups_detail_get_member [0.283746s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8b77b6e1-7003-458b-96fe-83bfe9934072 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_invalid_state [0.023699s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_548_project_admin_delete_runbook [0.069426s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/1908676c-1e90-4512-9e15-9bcad1ea1d3e GOT Response: 204 No Content Openstack-Request-Id: req-49e8e5f8-e761-4cf9-93c3-ea1959e7d67a 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_manager.DoNodeServiceTestCase.test_continue_node_service_worker_pool_full [0.084056s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_snmp_get_failure [0.023407s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_snmp_set_failure [0.022375s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_120_portgroups_detail_get_observer [0.065022s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/portgroups/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-eab2a870-49e5-4bfa-9d59-8f669247b161 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_reset_on_timeout [0.024044s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_549_project_manager_delete_runbook [0.071136s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/db5d823b-bba5-4a60-b88d-7104cb9f57b4 GOT Response: 204 No Content Openstack-Request-Id: req-83dd555c-02b1-4730-8ee0-005b87525537 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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_error [0.023074s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_continue_node_service_wrong_state [0.076772s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_off [0.022604s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_121_portgroups_portgroup_ident_get_admin [0.070947s] ... 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-dd9f8ecc-7d1e-4956-8845-87babeef3dc5 X-Openstack-Ironic-Api-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_on [0.022681s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_550_service_get_runbooks [0.071270s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8be57cea-0b3f-4982-9705-06b1c6c215ea 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": "572c7386-69f3-4acb-a29f-76c84b8fafff", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/572c7386-69f3-4acb-a29f-76c84b8fafff", "rel": "self"}, {"href": "http://localhost/runbooks/572c7386-69f3-4acb-a29f-76c84b8fafff", "rel": "bookmark"}]}]} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_power_state_snmp_failure [0.022869s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_do_node_provision_action_unhold_service [0.078479s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_raritan_pdu2_snmp_objects [0.021787s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_122_portgroups_portgroup_ident_get_member [0.070904s] ... 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-ae13e452-9e24-4cc0-a843-375154c45a45 X-Openstack-Ironic-Api-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_servertech_sentry3_snmp_objects [0.021289s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_551_runbooks_project_admin [0.070540s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-62e17ed1-1c0e-46c9-a375-7f05f45e7690 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": "2d98e3f2-da60-4870-a0e0-0957790f1200", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/2d98e3f2-da60-4870-a0e0-0957790f1200", "rel": "self"}, {"href": "http://localhost/runbooks/2d98e3f2-da60-4870-a0e0-0957790f1200", "rel": "bookmark"}]}]} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_servertech_sentry4_snmp_objects [0.021540s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_snmp_auto_cache_supports_pdu_replacement [0.024404s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeServiceTestCase.test_do_node_service [0.079474s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_123_portgroups_portgroup_ident_get_observer [0.070081s] ... 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-a864fc78-55ee-4f85-8374-e60d5bb18c0e X-Openstack-Ironic-Api-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.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_off [0.022712s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_552_runbooks_runbook_id_get_project_admin [0.070721s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/25820c3b-fdc1-446f-9655-bf581cda58df WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c1a6bcde-b7b1-4013-a37e-1d8e856afd14 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "25820c3b-fdc1-446f-9655-bf581cda58df", "created_at": "2026-04-12T07:48:14.207837+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/25820c3b-fdc1-446f-9655-bf581cda58df", "rel": "self"}, {"href": "http://localhost/runbooks/25820c3b-fdc1-446f-9655-bf581cda58df", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_on [0.023889s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_reset [0.023492s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_124_portgroups_portgroup_ident_patch_admin [0.071442s] ... 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-c90dd868-ac74-4598-a647-493e8baf6614 X-Openstack-Ironic-Api-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.conductor.test_manager.DoNodeServiceTestCase.test_do_node_service_maintenance [0.078934s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_state_off [0.022644s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_power_state_on [0.023545s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_553_project_admin_patch_runbook [0.089564s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/55fbde2a-2f26-4be7-930d-9f4aa62df168 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-47e4b2f7-a3e9-456f-a8f0-557a0daec428 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "55fbde2a-2f26-4be7-930d-9f4aa62df168", "created_at": "2026-04-12T07:48:14.280587+00:00", "updated_at": "2026-04-12T07:48:14.334863+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/55fbde2a-2f26-4be7-930d-9f4aa62df168", "rel": "self"}, {"href": "http://localhost/runbooks/55fbde2a-2f26-4be7-930d-9f4aa62df168", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_teltronix_snmp_objects [0.021998s] ... ok {0} ironic.tests.unit.drivers.modules.test_snmp.SNMPDeviceDriverTestCase.test_vertivgeist_pdu_snmp_objects [0.021624s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_125_portgroups_portgroup_ident_patch_member [0.076111s] ... 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-2a4be959-8d33-48fa-88d8-2a716259f259 X-Openstack-Ironic-Api-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.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_clean_and_deploy_step_all_args [0.018592s] ... ok {0} ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_all_args [0.018481s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_554_runbooks_project_manager [0.069960s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-875623bd-a51c-47b7-8527-5873d73611f5 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": "1a130e51-c1a7-4225-9f44-5491f053861b", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/1a130e51-c1a7-4225-9f44-5491f053861b", "rel": "self"}, {"href": "http://localhost/runbooks/1a130e51-c1a7-4225-9f44-5491f053861b", "rel": "bookmark"}]}]} {0} ironic.tests.unit.drivers.test_base.DeployAndCleanStepDecoratorTestCase.test_deploy_and_clean_step_priority_only [0.018483s] ... ok {0} ironic.tests.unit.drivers.test_base.TestBIOSInterface.test_apply_configuration_wrapper [0.018820s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_126_portgroups_portgroup_ident_patch_observer [0.073882s] ... 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-e7de4d6d-0853-4afc-a2ea-8176144d90fa X-Openstack-Ironic-Api-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.drivers.test_base.TestBIOSInterface.test_factory_reset_wrapper [0.021697s] ... ok {0} ironic.tests.unit.drivers.test_base.TestBareDriver.test_class_variables [0.019564s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_555_runbooks_runbook_id_get_project_manager [0.068401s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/d5fccdd5-f180-4e23-9ae5-dfa44cd23588 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-0cfafa08-9c87-414a-ba09-ff0715be0e3a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d5fccdd5-f180-4e23-9ae5-dfa44cd23588", "created_at": "2026-04-12T07:48:14.447475+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/d5fccdd5-f180-4e23-9ae5-dfa44cd23588", "rel": "self"}, {"href": "http://localhost/runbooks/d5fccdd5-f180-4e23-9ae5-dfa44cd23588", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.test_base.TestBootInterface.test_validate_rescue_default_impl [0.020021s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_127_portgroups_portgroup_ident_delete_admin [0.066751s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c775876d-5047-4c2f-a580-28f17b8951b1 X-Openstack-Ironic-Api-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.drivers.test_ilo.Ilo5HardwareTestCase.test_default_interfaces [0.038836s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_556_project_manager_patch_runbook [0.089216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/3fec0d1b-ebc6-4e79-964c-f37de5f60f4d WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-51a9ca6d-cfab-4432-87e2-536f39e78b6a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "3fec0d1b-ebc6-4e79-964c-f37de5f60f4d", "created_at": "2026-04-12T07:48:14.516863+00:00", "updated_at": "2026-04-12T07:48:14.568579+00:00", "name": "CUSTOM_NAME", "extra": {}, "public": false, "owner": "70e5e25a-2ca2-4cb1-8ae8-7d8739cee205", "disable_ramdisk": false, "links": [{"href": "http://localhost/v1/runbooks/3fec0d1b-ebc6-4e79-964c-f37de5f60f4d", "rel": "self"}, {"href": "http://localhost/runbooks/3fec0d1b-ebc6-4e79-964c-f37de5f60f4d", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_128_portgroups_portgroup_ident_delete_member [0.070305s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-abcd4886-f7ea-4c60-b9bf-b7c2cc3a3dcf X-Openstack-Ironic-Api-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.drivers.test_ilo.Ilo5HardwareTestCase.test_override_raid [0.056702s] ... ok {0} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_default_interfaces [0.040479s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_557_runbooks_project_member [0.071838s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-8abd06f2-f937-4f99-a72c-190a08d17516 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": "bd183f9c-40b7-4938-90f4-e10301be9cf0", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/bd183f9c-40b7-4938-90f4-e10301be9cf0", "rel": "self"}, {"href": "http://localhost/runbooks/bd183f9c-40b7-4938-90f4-e10301be9cf0", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_129_portgroups_portgroup_ident_delete_observer [0.071448s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/portgroups/6eb02b44-18a3-4659-8c0b-8d2802581ae4 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bb0957a4-bb36-4439-8c70-44c480b41d23 X-Openstack-Ironic-Api-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.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_agent_rescue [0.042807s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_130_nodes_portgroups_get_admin [0.068512s] ... 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-d1de669d-36bc-4c28-bbe9-bc1651e0c2e7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_bios_configuration [0.043593s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_558_runbooks_runbook_id_get_project_member [0.084495s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/d0a1f91e-9022-4636-95b9-560c3c8477f3 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e2c6f564-b454-474f-b4cf-0e7daa2d7c92 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "d0a1f91e-9022-4636-95b9-560c3c8477f3", "created_at": "2026-04-12T07:48:14.683155+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/d0a1f91e-9022-4636-95b9-560c3c8477f3", "rel": "self"}, {"href": "http://localhost/runbooks/d0a1f91e-9022-4636-95b9-560c3c8477f3", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_boot_configuration [0.044384s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_131_nodes_portgroups_get_member [0.066762s] ... 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-4e1df9dc-6682-44a5-8522-60bc88143714 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_inspector [0.043677s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_559_runbooks_list_project_reader [0.081238s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-2bfe1b19-c199-4c7d-b560-4949874927d3 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": "c27a3a96-7af6-4fa0-be59-d81e70479285", "name": "CUSTOM_DT1", "links": [{"href": "http://localhost/v1/runbooks/c27a3a96-7af6-4fa0-be59-d81e70479285", "rel": "self"}, {"href": "http://localhost/runbooks/c27a3a96-7af6-4fa0-be59-d81e70479285", "rel": "bookmark"}]}]} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_132_nodes_portgroups_get_observer [0.066004s] ... 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-72528c40-0ea4-4a2d-a298-d49956624f69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_ipmitool_power [0.044004s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_560_runbooks_runbook_id_get_project_reader [0.070390s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks/5bdf0f11-195c-42d6-9ae8-e0a797409f28 WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-afbe8a6c-cf09-4d14-8132-d533bef4d0eb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 X-Openstack-Ironic-Api-Version: 1.93 {"uuid": "5bdf0f11-195c-42d6-9ae8-e0a797409f28", "created_at": "2026-04-12T07:48:14.852353+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/5bdf0f11-195c-42d6-9ae8-e0a797409f28", "rel": "self"}, {"href": "http://localhost/runbooks/5bdf0f11-195c-42d6-9ae8-e0a797409f28", "rel": "bookmark"}], "steps": [{"interface": "raid", "step": "create_configuration", "args": {"logical_disks": []}, "order": 1}]} {0} ironic.tests.unit.drivers.test_irmc.IRMCHardwareTestCase.test_override_with_raid_configuration [0.043459s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_133_nodes_portgroups_detail_get_admin [0.065115s] ... 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-feca38ca-0239-4e78-ab1e-a783e661078b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.test_snmp.SNMPHardwareTestCase.test_default_interfaces [0.040501s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_561_runbooks_list_third_party_admin [0.073875s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/runbooks WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-72620ea0-0462-4afd-a072-f3e92548696f 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_manager.DoNodeTearDownTestCase.test__do_node_tear_down_from_valid_states [0.686610s] ... ok {0} ironic.tests.unit.drivers.test_snmp.SNMPHardwareTestCase.test_fake_management [0.040327s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_134_nodes_portgroups_detail_get_member [0.067025s] ... 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-82f19a8b-1fd4-41de-94f5-ee37fd5b15b8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_get_properties [0.026852s] ... ok {0} ironic.tests.unit.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_bad_method [0.040060s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_562_project_reader_cannot_post_runbook [0.084568s] ... 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-ad32aca3-30c2-4781-9f72-3f5173496061 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_135_nodes_portgroups_detail_get_observer [0.073044s] ... 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-ef578d27-900c-417f-990d-be769874c0d2 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.drivers.test_utils.MixinVendorInterfaceTestCase.test_vendor_interface_validate_valid_methods [0.040636s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_ok_with_console [0.119526s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_create [0.023129s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_136_ports_get_admin [0.070484s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-53efa229-4d27-4c47-a459-39a3c2138296 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACProjectScoped.test_project_scoped_563_project_reader_cannot_patch_runbook [0.076899s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/dcba6857-a2f1-499a-85a4-1e30bf26316a WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-bbe414c3-7a7a-4c05-b95c-7f8c820005e8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_bad_id_and_uuid [0.022427s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_id [0.021957s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_get_by_uuid [0.022026s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_137_ports_get_member [0.065277s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3a93d5b0-b3a1-4dbf-a535-b7d9fc5d8a4d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_chassis.TestChassisObject.test_list [0.022681s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_ok_without_console [0.108212s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_564_project_reader_cannot_set_runbook_owner [0.080997s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/2f7d1150-9ab4-4e99-b2a0-f5a6ec5e9b31 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b3e23b03-1f20-4534-ae6e-6e23631b4ac1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_chassis.TestChassisObject.test_payload_schemas [0.021656s] ... ok {0} ironic.tests.unit.objects.test_chassis.TestChassisObject.test_refresh [0.021990s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_138_ports_get_observer [0.067429s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-aa0b060e-28b8-4976-a0ea-954dc53e23ed X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_chassis.TestChassisObject.test_save [0.024608s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_565_project_reader_cannot_set_runbook_public [0.075889s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/f53ded93-1931-478f-976b-d476a32ddea6 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4452265e-aa16-4e3d-a70c-fee08d6b65df X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_chassis.TestChassisObject.test_save_after_refresh [0.029686s] ... ok {0} ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce [0.018556s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_with_allocation [0.118897s] ... ok {0} ironic.tests.unit.objects.test_fields.TestFlexibleDictField.test_coerce_bad_values [0.018482s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_139_ports_post_admin [0.075127s] ... 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-6503c7f1-73f8-4e3e-a85b-2a75484c9baa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_fields.TestFlexibleDictField.test_coerce_nullable_translation [0.018797s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_566_project_reader_cannot_delete_runbook [0.073526s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/6b7fcd99-6f46-45d3-b83e-575df0fa7c09 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cf96802a-aabb-4141-8bc5-744c22dec971 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_140_ports_post_member [0.074602s] ... 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-ee329277-6461-400b-a042-f2c273a56510 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.DoNodeTearDownTestCase.test__do_node_tear_down_with_source_path [0.105571s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_567_project_member_cannot_post_runbook [0.092157s] ... 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-ff6d9cec-3b9a-4547-a06f-818784124798 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_141_ports_post_observer [0.068819s] ... 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-28891fda-f821-4abe-9d1c-2842ff355a04 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_console_raises_error [0.100276s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_568_project_member_cannot_patch_runbook [0.076144s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/64e75853-daf6-4c01-9c5d-48ed26c7460f WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_NAME'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d068ac50-447d-4f66-a6f8-376e6eb476c6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_142_ports_detail_get_admin [0.065215s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-472259f5-056a-465c-8491-539b2bde2422 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_fields.TestNotificationStatusField.test_coerce_bad_value [0.234251s] ... ok {0} ironic.tests.unit.objects.test_fields.TestNotificationStatusField.test_coerce_good_value [0.019154s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_143_ports_detail_get_member [0.072067s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-45e26567-b06c-4956-a5c9-e6e2206ef529 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test__validate_property_values_success [0.021827s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_driver_raises_error [0.104834s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_insecure [0.020974s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure [0.020265s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_144_ports_detail_get_observer [0.061858s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ports/detail WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3e064959-5240-434b-a85e-ee4e24819277 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_as_dict_secure_configdrive_as_dict [0.021548s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive [0.020666s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_invalid_state [0.083574s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_as_dict_secure_with_configdrive_as_dict [0.022392s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_145_ports_port_id_get_admin [0.072434s] ... 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-d04096a6-c87b-472a-8a23-9ff20a31f7e3 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_as_dict_with_traits [0.022065s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_create [0.022812s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_protected [0.079857s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_create_with_invalid_properties [0.023062s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_146_ports_port_id_get_member [0.072633s] ... 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-1d17dc37-6728-4afd-814a-6e8d69f6315d X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_create_with_traits [0.023689s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_569_project_member_cannot_set_runbook_owner [0.296278s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/998ae033-b880-49c2-9d70-b2840f690df2 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e3b8b98b-5632-4393-b993-40c9c8433d69 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_get_bad_id_and_uuid [0.023871s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_validate_fail [0.078731s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_id [0.025619s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_147_ports_port_id_get_observer [0.074955s] ... 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-7f2dd011-51a7-4f63-8fe6-f65b4332ec59 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_get_by_instance_not_found [0.023511s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_570_project_member_cannot_set_runbook_public [0.070856s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/1673018d-c695-4330-b773-ff30e2558c41 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3be77a20-aab5-4155-9bb4-3de277ffdb49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_get_by_instance_uuid [0.028676s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_name [0.025270s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoNodeTearDownTestCase.test_do_node_tear_down_worker_pool_full [0.093046s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_571_project_member_cannot_delete_runbook [0.066510s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/runbooks/6c282a14-af1d-469c-848e-2cf2e4ba0b6a GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d58b8dc5-7e15-4b10-b999-993ef39ef9e3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_148_ports_port_id_patch_admin [0.077821s] ... 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-4e2f544c-657e-43e3-913e-8a0be6d3be1b X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_get_by_name_node_not_found [0.027154s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_port_addresses [0.024474s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_get_by_uuid [0.022356s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_572_project_manager_cannot_set_runbook_owner [0.070899s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/a6952293-49dd-451b-9ee3-9cab2f8826f8 WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7b503655-8947-466f-b254-f22a77f81a8c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_get_interface [0.021840s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_automated_clean [0.086259s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_149_ports_port_id_patch_member [0.078975s] ... 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-5499ada7-edfd-4890-b963-00403a733795 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_get_interface_overriden [0.020912s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_list [0.021555s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields [0.022614s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_573_project_manager_cannot_set_runbook_public [0.070477s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/75a6db67-b895-4ef3-99c8-e8bc2128002f WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b348ef1f-57df-4098-b5aa-2da031d4a8b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_150_ports_port_id_patch_observer [0.078115s] ... 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-59e5675f-033c-4507-b50c-c78dc05d34d8 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_list_with_fields_empty_trait_present [0.024651s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_list_with_fields_traits [0.022780s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_payload_schemas [0.022314s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_574_project_admin_cannot_set_runbook_owner [0.068466s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/09f16be9-7955-4037-92e6-a2050ecf43bd WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f60251fd-2286-498d-89a2-3577378d60bf X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_151_ports_port_id_delete_admin [0.074300s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-97b3c131-7f77-4f3d-9bb7-15ad8205e3c1 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_refresh [0.024194s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_release [0.021706s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_release_node_not_found [0.021658s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_575_project_admin_cannot_set_runbook_public [0.071543s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/8d86e908-b7a8-417b-9ba7-1dad5f977a56 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9c15508a-590e-4f68-96be-a1b27ff48952 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_reserve [0.022914s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_152_ports_port_id_delete_member [0.073504s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-babb84a9-8c83-4976-b3d0-90c0c3842aa2 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_reserve_node_not_found [0.025567s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_save [0.025125s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_576_service_cannot_patch_runbook_owner [0.070733s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/580a7e41-caf8-4bf8-bd8e-865cf4f2663c WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-55794c13-ce12-4733-9be0-954cc3983331 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_153_ports_port_id_delete_observer [0.068907s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ports/1be26c0b-03f2-4d2e-ae87-c02d7f33c781 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b8ecb0ad-ace7-47e5-8f45-d8f34225c977 X-Openstack-Ironic-Api-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.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_clean_step_not_abortable [0.305010s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_after_refresh [0.044121s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_truncated [0.031280s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_577_service_cannot_patch_runbook_public [0.070656s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/72e612e6-3d4a-424b-990d-f22a94553ad8 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-493893ee-7283-4b1e-af63-513bc90a780b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_154_nodes_ports_get_admin [0.068264s] ... 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-c2c16a1c-249b-4394-b582-e7288a81c8a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.objects.test_node.TestNodeObject.test_save_updated_at_field [0.024964s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_cleanhold_automated_clean [0.081406s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group [0.023994s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_conductor_group_fail [0.024521s] ... ok {3} ironic.tests.unit.api.test_acl.TestRBACProjectScoped.test_project_scoped_578_third_party_admin_cannot_patch_runbook_owner [0.071289s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/70a8c80d-7cd6-47db-96c0-f9bc80762e7a WITH [{'op': 'replace', 'path': '/owner', 'value': 'new_owner'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4fa456df-fe41-4685-88f4-9d6a9279fae6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_155_nodes_ports_get_member [0.066369s] ... 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-42cfa1f6-cf24-4e40-af05-b131e4914b74 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.objects.test_node.TestNodeObject.test_save_with_conductor_group_uppercase [0.025588s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_cleanhold_manual_clean [0.081691s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_save_with_traits [0.023904s] ... ok {0} ironic.tests.unit.objects.test_node.TestNodeObject.test_touch_provisioning [0.023246s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_156_nodes_ports_get_observer [0.066903s] ... 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-053ca1a0-c0d5-4881-ac0f-5e9806603474 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.TestRBACProjectScoped.test_project_scoped_579_third_party_admin_cannot_patch_runbook_public [0.075679s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/runbooks/d2e2f80c-3d8d-4476-b7f8-2ee585ae4d44 WITH [{'op': 'replace', 'path': '/public', 'value': True}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-a37ad5ce-bb3e-4f40-b7de-7b0e17735474 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_node.TestNodeObject.test_update_with_invalid_properties [0.024273s] ... ok {3} ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_disable_audit_request [0.027556s] ... ok {0} ironic.tests.unit.objects.test_objects.TestMisc.test_max_version [0.020021s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_from_deployhold [0.079366s] ... ok {0} ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_one [0.019587s] ... ok {3} ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request [0.028696s] ... ok {0} ironic.tests.unit.objects.test_objects.TestMisc.test_max_version_two [0.018910s] ... ok {3} ironic.tests.unit.api.test_audit.TestAuditMiddleware.test_enable_audit_request_error [0.026999s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object [0.020024s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_map_version_bad [0.018826s] ... ok {3} ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_disable [0.034682s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_abort_manual_clean [0.085955s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test__from_db_object_old [0.020444s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_as_dict [0.019433s] ... ok {3} ironic.tests.unit.api.test_healthcheck.TestHealthcheckMiddleware.test_enable [0.034412s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object [0.018961s] ... ok {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_add_request_id [0.031712s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_as_dict_with_nested_object_list [0.020320s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_manage [0.081538s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_assign_value_without_DictCompat [0.019252s] ... ok {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_after_miss_context [0.026286s] ... 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\": \"\"}"} {0} ironic.tests.unit.objects.test_objects.TestObject.test_base_attributes [0.020908s] ... ok {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_auth_token_info [0.031080s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_changed_1 [0.020030s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_157_nodes_ports_detail_get_admin [0.278732s] ... 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-36984c19-37b0-41c1-a7e8-a819cd4e3a43 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.objects.test_objects.TestObject.test_changed_2 [0.018112s] ... ok {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_noauth_token_removed [0.033316s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_changed_3 [0.018506s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_provide [0.081701s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_changed_4 [0.018465s] ... ok {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_not_admin [0.035242s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_changes_in_primitive [0.019059s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_158_nodes_ports_detail_get_member [0.073936s] ... 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-e1d7cee7-e4c6-41f5-bd8b-be30150cb71b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.objects.test_objects.TestObject.test_contains [0.017475s] ... ok {3} ironic.tests.unit.api.test_hooks.TestContextHook.test_context_hook_public_api [0.034852s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_new [0.018331s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provision_action_provide_in_maintenance [0.079698s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old [0.018047s] ... ok {3} ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_defaults [0.029403s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_convert_to_version_old_keep [0.018467s] ... ok {3} ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_produces_a_warning [0.027545s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_159_nodes_ports_detail_get_observer [0.071024s] ... 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-dc9a281d-42fa-462b-a818-584d855879f7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.objects.test_objects.TestObject.test_convert_to_version_same [0.018831s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_dehydration [0.017385s] ... ok {3} ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_random_no_zeros [0.030522s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db [0.019634s] ... ok {2} ironic.tests.unit.conductor.test_manager.DoProvisioningActionTestCase.test_do_provisioning_action_worker_pool_full [0.093569s] ... ok {3} ironic.tests.unit.cmd.test_conductor.ConductorStartTestCase.test_warn_about_unsafe_shred_parameters_zeros [0.028040s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_downgrade [0.019494s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_160_portgroups_ports_get_admin [0.070319s] ... 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-d1e336d7-7cf1-450b-874d-7edde677dfef X-Openstack-Ironic-Api-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.conductor.test_manager.ManagerSyncLocalStateTestCase.test_already_mapped [0.027173s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_do_version_changes_for_db_pinned [0.020049s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_get [0.019094s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_good [0.024730s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.DbSyncTestCase.test_upgrade_and_version [0.054324s] ... 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. {0} ironic.tests.unit.objects.test_objects.TestObject.test_get_changes [0.020603s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_no_free_worker [0.026627s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned [0.018900s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_161_portgroups_ports_get_member [0.073327s] ... 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-758d1c0f-c00e-4c55-9bbd-388062059078 X-Openstack-Ironic-Api-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.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions [0.029935s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ foo() migrated 15 of 15 objects. {2} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_node_locked [0.027109s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_get_changes_pinned_2versions [0.019490s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2 [0.025886s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 15 of 15 objects. func2() migrated 20 of 20 objects. {0} ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_no_pin [0.017810s] ... ok {2} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_not_mapped [0.024980s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned [0.019690s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_done [0.027734s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 10 of 10 objects. func2() migrated 0 of 0 objects. {2} ironic.tests.unit.conductor.test_manager.ManagerSyncLocalStateTestCase.test_worker_limit [0.024765s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_162_portgroups_ports_get_observer [0.068339s] ... 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-25c4e664-4467-42af-ba41-d69372ef4b5f X-Openstack-Ironic-Api-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.objects.test_objects.TestObject.test_get_target_version_pinned_bad [0.020336s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_get_target_version_pinned_no_myobj [0.019520s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_notdone [0.028719s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 10 of 15 objects. {0} ironic.tests.unit.objects.test_objects.TestObject.test_get_updates [0.018547s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_2_onedone [0.025881s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 10 of 10 objects. {0} ironic.tests.unit.objects.test_objects.TestObject.test_hydration [0.017883s] ... ok {2} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties [0.069460s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_163_portgroups_ports_detail_get_admin [0.068610s] ... 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-896a7907-b607-48ed-bb4c-685df9df8fcb X-Openstack-Ironic-Api-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.objects.test_objects.TestObject.test_hydration_bad_ns [0.018609s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_exception [0.028261s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ Error while running foo: bar. {2} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_get_raid_logical_disk_properties_iface_not_supported [0.026134s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_hydration_type_error [0.018315s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_none [0.026554s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_load [0.018407s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_load_in_base [0.017997s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_164_portgroups_ports_detail_get_member [0.070432s] ... 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-13a01e86-dfbf-4530-a096-38f0bb01b385 X-Openstack-Ironic-Api-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.cmd.test_dbsync.OnlineMigrationTestCase.test__run_migration_functions_two_calls_done [0.029240s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ func1() migrated 10 of 10 objects. func1() migrated 0 of 0 objects. func2() migrated 0 of 0 objects. {2} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config [0.053202s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations [0.024591s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Running batches of 50 until migrations have been completed. Data migrations have completed. {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_batches [0.023003s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Running batches of 50 until migrations have been completed. Data migrations have completed. {2} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_empty [0.052132s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_165_portgroups_ports_detail_get_observer [0.068684s] ... 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-e8b9e2b7-2467-48db-9b37-07c518dec328 X-Openstack-Ironic-Api-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.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_exception [0.025982s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Running batches of 50 until migrations have been completed. {2} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_iface_not_supported [0.044049s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option1 [0.024941s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Malformed option m1key1=value1 {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_166_volume_get_admin [0.060100s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-7da2627e-9d26-4e1c-adf3-049c9cc82824 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_invalid_option2 [0.024296s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Malformed option m1.key1value1 {2} ironic.tests.unit.conductor.test_manager.RaidHardwareTypeTestCases.test_set_target_raid_config_invalid_parameter_value [0.049694s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_max_count_neg [0.023125s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ "max-count" must be a positive value. {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_notdone [0.023349s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Data migrations have not completed. Please re-run. {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_167_volume_get_member [0.062330s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-04f141f9-5808-42aa-b168-17fc03df108b X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_objects.TestObject.test_loaded_in_primitive [0.217602s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test__run_online_data_migrations_with_options [0.025570s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ Running batches of 50 until migrations have been completed. Data migrations have completed. {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data [0.064153s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_obj_attr_is_set [0.019374s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions [0.026937s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_obj_constructor [0.018621s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_168_volume_get_observer [0.063003s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-0f675564-28b6-4803-a8c9-64244f897322 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_objects.TestObject.test_obj_fields [0.019303s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_bad [0.028418s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_object_inheritance [0.017890s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_obj_versions_ignore_models [0.027587s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_object_property [0.019317s] ... ok {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_disabled [0.090754s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_169_volume_connectors_get_admin [0.067322s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-86509f12-e908-4c8f-b25d-61ccb4552e49 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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}"} {0} ironic.tests.unit.objects.test_objects.TestObject.test_object_property_type_error [0.018222s] ... ok {3} ironic.tests.unit.cmd.test_dbsync.OnlineMigrationTestCase.test_check_versions_bad [0.027160s] ... ok Captured stderr: ~~~~~~~~~~~~~~~~ This is bad {0} ironic.tests.unit.objects.test_objects.TestObject.test_orphaned_object [0.017682s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_refresh_object [0.017859s] ... ok {3} ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema [0.028778s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_static_result [0.017829s] ... ok {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test___send_sensor_data_multiple_workers [0.070600s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_170_volume_connectors_get_member [0.065373s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-e700b584-34a6-4dd9-980c-0c4705e62fa4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_args.ValidateSchemaTest.test_schema_needs_args [0.026621s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_supports_version [0.020528s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_unknown_objtype [0.019667s] ... ok {3} ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_kwargs [0.031306s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_updates [0.018296s] ... ok {3} ironic.tests.unit.common.test_args.ValidateSchemaTest.test_schema_needs_mixed [0.031355s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_171_volume_connectors_get_observer [0.067587s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-dbc6699a-f0bd-431a-a29f-1d970baecea7 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.SensorsTestCase.test___send_sensor_data_one_worker [0.070616s] ... ok {0} ironic.tests.unit.objects.test_objects.TestObject.test_with_alternate_context [0.018283s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra [0.021586s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum [0.023664s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_in_internal_info [0.021672s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_glance [0.018879s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_lower_version [0.021699s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_http_url [0.021573s] ... ok {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_all [0.071107s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_172_volume_connectors_post_admin [0.074847s] ... 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-afa8122b-1a7b-4d67-8978-03df5f88bceb X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_portgroup.TestConvertToVersion.test_vif_in_extra_not_in_extra [0.021257s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_https_url [0.023602s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_create [0.024029s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_not_allowed [0.020232s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_sha256 [0.019379s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_bad_id_and_uuid_and_address_and_name [0.021019s] ... ok {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_non [0.068638s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_173_volume_connectors_post_member [0.074304s] ... 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-560c322b-3a9c-41be-948c-d88ab1ce5b21 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_portgroup.TestPortgroupObject.test_get_by_address [0.022442s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_image_checksum_sha512 [0.025244s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_id [0.023994s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_get_checksum_and_algo_no_checksum_file_url [0.021618s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_is_checksum_url [0.019221s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_name [0.021758s] ... ok {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__filter_out_unsupported_types_part [0.069428s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_is_checksum_url_file [0.019533s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_get_by_uuid [0.023354s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_174_volume_connectors_post_observer [0.083173s] ... 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-9289d7e0-c558-4700-bf79-ea722ea22be6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.objects.test_portgroup.TestPortgroupObject.test_list [0.022876s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_list_by_node_id [0.023452s] ... ok {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test__sensors_conductor [0.079316s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_payload_schemas [0.021699s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_refresh [0.021901s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_175_volume_volume_connector_id_get_admin [0.089335s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/a09f0a98-2d5a-4bfa-80c7-eb6aa31d6a62 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-8a09e2e5-80e0-4145-a9f0-2ec76f62462d X-Openstack-Ironic-Api-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 a09f0a98-2d5a-4bfa-80c7-eb6aa31d6a62 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save [0.023900s] ... ok {0} ironic.tests.unit.objects.test_portgroup.TestPortgroupObject.test_save_after_refresh [0.038723s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_176_volume_volume_connector_id_get_member [0.072777s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/08bb08c6-b898-4613-988f-8615627792ad WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-570f5c37-c59d-4341-a109-67b5e93a9b6b X-Openstack-Ironic-Api-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 08bb08c6-b898-4613-988f-8615627792ad could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__allowlist_mac [0.021938s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__allowlist_unknown_hosts [0.022745s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__configure_removedlist_allowlist [0.020088s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsTestCase.test_is_checksum_url_string [0.229043s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_177_volume_volume_connector_id_get_observer [0.067737s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/connectors/95b92bce-3ba0-4e8a-9e00-f61a5a3ede73 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3245e4fb-b40b-43d8-b91c-206e1f7dadc4 X-Openstack-Ironic-Api-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 95b92bce-3ba0-4e8a-9e00-f61a5a3ede73 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__configure_removedlist_denylist [0.020834s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum [0.021835s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__denylist_mac [0.021006s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_file_not_found [0.020372s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__denylist_unknown_hosts [0.020843s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_hashlib_not_supports_algo [0.021960s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__get_allowlist [0.019655s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_178_volume_volume_connector_id_patch_admin [0.073132s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/2be2d9a2-0a5c-45db-8776-3bedaa54d183 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-e7af48b1-0d19-4856-ad4e-2260ef54ea9b X-Openstack-Ironic-Api-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 2be2d9a2-0a5c-45db-8776-3bedaa54d183 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_mismatch [0.025453s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__get_denylist [0.020501s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_mixed_case [0.021349s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__get_no_allowlist [0.020056s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestHelpers.test__get_no_denylist [0.018738s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_mixed_case_delimited [0.020552s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_179_volume_volume_connector_id_patch_member [0.071687s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/eff75497-f6fd-4c14-be4d-ac6b13922a15 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ad2a46b9-d062-4b44-b079-436c82a58b0d X-Openstack-Ironic-Api-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 eff75497-f6fd-4c14-be4d-ac6b13922a15 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task [0.320330s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_change_state [0.022824s] ... ok {3} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsValidateTestCase.test_validate_checksum_mixed_md5 [0.020464s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_deny_macs [0.024060s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes [0.045003s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_no_macs [0.023318s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_180_volume_volume_connector_id_patch_observer [0.067273s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/connectors/90c36538-38c4-44a3-b619-717f3331775a WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-bee0ba44-137e-4fe1-95c6-bf82d0ecf52f X-Openstack-Ironic-Api-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 90c36538-38c4-44a3-b619-717f3331775a could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_maintenance [0.070137s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_only_new_macs [0.023679s] ... ok {0} ironic.tests.unit.pxe_filter.test_dnsmasq.TestSync.test_removed_nodes [0.021406s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_record_failure [0.046348s] ... ok {0} ironic.tests.unit.pxe_filter.test_service.TestManager.test_init_and_run [0.030594s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_181_volume_volume_connector_id_delete_admin [0.066779s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/14af4b92-1fa3-45f1-b4a2-6fc6a19674d0 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3a08e915-c51e-47ec-a75a-eb7060341e89 X-Openstack-Ironic-Api-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 14af4b92-1fa3-45f1-b4a2-6fc6a19674d0 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_no_management [0.074370s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_attach_set_meta_failure [0.055692s] ... ok {0} ironic.tests.unit.pxe_filter.test_service.TestSync.test_no_nodes [0.027252s] ... ok {0} ironic.tests.unit.pxe_filter.test_service.TestSync.test_no_nodes_with_discovery [0.024050s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_conn_init_failure [0.041238s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_182_volume_volume_connector_id_delete_member [0.065344s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/593f269b-7204-46b1-a36d-0222797658c6 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4a79a26f-867f-4fbc-af60-0ed3c60ebfc4 X-Openstack-Ironic-Api-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 593f269b-7204-46b1-a36d-0222797658c6 could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.pxe_filter.test_service.TestSync.test_nothing_on_inspection [0.033813s] ... ok {2} ironic.tests.unit.conductor.test_manager.SensorsTestCase.test_send_sensor_task_shutdown [0.066824s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_initialize_connection_failure [0.046945s] ... ok {0} ironic.tests.unit.pxe_filter.test_service.TestSync.test_sync [0.039116s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_183_volume_volume_connector_id_delete_observer [0.064709s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/connectors/a2d80749-4901-4483-a414-7c1a3127387b GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ba14d21b-c1ed-4e1d-81d6-866388665408 X-Openstack-Ironic-Api-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 a2d80749-4901-4483-a414-7c1a3127387b could not be found.\", \"debuginfo\": null}"} {0} ironic.tests.unit.test_base.BlockExecuteTestCase.test_can_mock_execute [0.020739s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_one_attached [0.046808s] ... ok {0} ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute [0.018349s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_invalid_state [0.076393s] ... ok {0} ironic.tests.unit.test_base.BlockExecuteTestCase.test_exception_raised_for_execute_parent_mocked [0.018791s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_184_volume_targets_get_admin [0.060539s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-593fd7c5-659b-4557-83fd-34ab96dcf758 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_cinder.TestCinderActions.test_attach_volumes_reserve_failure [0.046887s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_maintenance [0.081063s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_attach_volumes_vol_not_found [0.044868s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_185_volume_targets_get_member [0.060680s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4d0655bc-f7a6-4f59-9cd0-f6998f9112c8 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_cinder.TestCinderActions.test_detach_volumes [0.046148s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_186_volume_targets_get_observer [0.059324s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-87a9d792-842d-46bd-a3b0-b6907963c3c1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_partial_ok [0.094650s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_begin_detaching_failure [0.046296s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_187_volume_targets_post_admin [0.065272s] ... 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-bc6aac3e-723e-4243-a6e9-60fb0a3263b4 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_cinder.TestCinderActions.test_detach_volumes_conn_init_failure_bad_request [0.042669s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_power_validate_fail [0.088433s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_allowed [0.045918s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_188_volume_targets_post_member [0.069086s] ... 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-b5a6bb02-63fe-4322-870b-bdaec7aabb86 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_cinder.TestCinderActions.test_detach_volumes_detach_failure_errors_not_allowed [0.053837s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_189_volume_targets_post_observer [0.073577s] ... 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-8381a051-0e8a-4a22-938f-b73fbd1f5f5c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_cinder.TestCinderActions.test_detach_volumes_detach_meta_failure_errors_not_allowed [0.056649s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_done [0.135371s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_190_volume_volume_target_id_get_admin [0.069001s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/c8436840-1b2a-45be-84c6-d805a5f4b509 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-4e22b928-8ea6-4562-a9c2-f89e01fdc57c X-Openstack-Ironic-Api-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 c8436840-1b2a-45be-84c6-d805a5f4b509 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_one_detached [0.051223s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_term_failure [0.042631s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_191_volume_volume_target_id_get_member [0.064940s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/e6431507-54e4-4482-880c-1c946e7b9f02 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5d5776ee-7c71-40dc-a670-40baefc98dab X-Openstack-Ironic-Api-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 e6431507-54e4-4482-880c-1c946e7b9f02 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_cinder.TestCinderActions.test_detach_volumes_vol_not_found [0.042896s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_error [0.134141s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_192_volume_volume_target_id_get_observer [0.062962s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/volume/targets/f3e85611-fb40-484e-8d5b-ef5804f1e1f1 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-76280e38-b3fb-4641-a0c5-c8f59e8acabf X-Openstack-Ironic-Api-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 f3e85611-fb40-484e-8d5b-ef5804f1e1f1 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_193_volume_volume_target_id_patch_admin [0.067214s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/2f0868ce-f9cf-4a57-ae12-1388f7d87208 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-fc428866-65d2-4259-a975-94f918c60130 X-Openstack-Ironic-Api-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 2f0868ce-f9cf-4a57-ae12-1388f7d87208 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_active_state_waiting [0.126170s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_deployfail_state [0.120835s] ... ok {3} ironic.tests.unit.common.test_cinder.TestCinderClient.test__get_cinder_session [0.331298s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_194_volume_volume_target_id_patch_member [0.267861s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/23db5231-8119-4b4a-9c3c-2eecc8311fa0 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-20cc0707-66fc-4933-92ae-2a2605bb732b X-Openstack-Ironic-Api-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 23db5231-8119-4b4a-9c3c-2eecc8311fa0 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_error_state [0.120078s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_195_volume_volume_target_id_patch_observer [0.064858s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/volume/targets/e36f553a-44d5-45fe-8f78-0c796372899e WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b8a15934-3bf2-436f-a9d2-af5f297d8849 X-Openstack-Ironic-Api-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 e36f553a-44d5-45fe-8f78-0c796372899e could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_from_available_state [0.074455s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_196_volume_volume_target_id_delete_admin [0.063594s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/6bd2a2c9-bc9d-4b96-9ee0-2b994ef83c7e GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-f82883d8-f6bd-4b93-b364-5f974e0f7171 X-Openstack-Ironic-Api-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 6bd2a2c9-bc9d-4b96-9ee0-2b994ef83c7e could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_rebuild_protected [0.087181s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_197_volume_volume_target_id_delete_member [0.065311s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/0fd10dc0-0d4d-46b6-b759-02afb4384969 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-40a68603-f0be-47f1-886f-677488f2d003 X-Openstack-Ironic-Api-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 0fd10dc0-0d4d-46b6-b759-02afb4384969 could not be found.\", \"debuginfo\": null}"} {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_traits_validate_fail [0.089039s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_198_volume_volume_target_id_delete_observer [0.067772s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/volume/targets/43d45bc6-13a6-47f5-8d44-da8a0ba9c330 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-0068c729-e706-4281-819b-e814ecc98c5f X-Openstack-Ironic-Api-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 43d45bc6-13a6-47f5-8d44-da8a0ba9c330 could not be found.\", \"debuginfo\": null}"} {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_199_nodes_volume_get_admin [0.058426s] ... 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-289831dc-e934-4cbc-9935-0421189f818d X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_fail [0.088584s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_200_nodes_volume_get_member [0.058139s] ... 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-404ec46e-1a41-46fc-abab-fe91ad7286cd X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_validate_template_fail [0.087055s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_201_nodes_volume_get_observer [0.060049s] ... 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-0d99948c-0740-4d4e-956c-8a5f53e06594 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_cinder.TestCinderClient.test_get_cinder_client_with_context [0.525949s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_202_nodes_volume_connectors_get_admin [0.062997s] ... 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-dbab8472-ff46-4201-a000-90d98df137fc X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_dynamic_driver_interfaces_set [0.028812s] ... ok {3} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface [0.022840s] ... ok {2} ironic.tests.unit.conductor.test_manager.ServiceDoNodeDeployTestCase.test_do_node_deploy_worker_pool_full [0.110188s] ... ok {3} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_invalid_network_interface_instance_info_override [0.021715s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_203_nodes_volume_connectors_get_member [0.062166s] ... 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-365c18e2-db1c-4a62-a85b-a303fbc7a83c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_manager.TestIndirectionApiConductor.test_object_action [0.023200s] ... ok {3} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_interfaces [0.025372s] ... ok {2} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_copies_object [0.020509s] ... ok {2} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_action_on_object [0.020856s] ... ok {3} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_create_node_valid_network_interface_instance_info_override [0.025068s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_204_nodes_volume_connectors_get_observer [0.063857s] ... 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-6ed2053b-60a8-449f-a0a8-babb77a899e1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_manager.TestIndirectionApiConductor.test_object_action_on_raise [0.022264s] ... ok {3} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface [0.026879s] ... ok {2} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_backport_versions [0.020331s] ... ok {3} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_no_network_interface_default_from_conf [0.026005s] ... ok {2} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action [0.020804s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_205_nodes_volume_targets_get_admin [0.062534s] ... 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-d95f15cb-e3fb-445a-8761-ae9575c59f7f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_manager.TestIndirectionApiConductor.test_object_class_action_on_object [0.022851s] ... ok {3} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_node_update_dynamic_driver_set_interfaces [0.049267s] ... ok {2} ironic.tests.unit.conductor.test_manager.TestIndirectionApiConductor.test_object_class_action_on_raise [0.022019s] ... ok {3} ironic.tests.unit.common.test_driver_factory.CheckAndUpdateNodeInterfacesTestCase.test_none_network_interface [0.026953s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_206_nodes_volume_targets_get_member [0.064005s] ... 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-fbc52954-d7f2-4fc9-b556-aebd5711f544 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_manager.UpdateNodeTestCase.test_associate_node_powered_off [0.043841s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task [0.037040s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_bad_default [0.036852s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_associate_node_powered_on [0.048836s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_207_nodes_volume_targets_get_observer [0.068110s] ... 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-0e3835db-8bc0-4a38-b0ba-158301be0b01 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_calculated_defaults [0.037952s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node [0.045355s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_208_drivers_get_admin [0.062828s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-3e9fec72-0b34-4b65-97fd-cc78b5a59e83 X-Openstack-Ironic-Api-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_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_configured_defaults [0.037354s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_already_associated [0.045973s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fake [0.041041s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_209_drivers_get_member [0.061219s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-6297684d-d4be-4f93-a3db-f8f5a0687fd4 X-Openstack-Ironic-Api-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.UpdateNodeTestCase.test_update_node_already_locked [0.046865s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_fallback_defaults [0.043552s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation [0.050814s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_210_drivers_get_observer [0.059928s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-aed562e2-eba6-4e61-a247-a27d0064c0d5 X-Openstack-Ironic-Api-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_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_incorrect [0.040039s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_forbidden [0.045520s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_instance_info_override [0.037558s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_211_drivers_driver_name_get_admin [0.058905s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-fe3bf38c-d8c5-4ba1-b48c-eb5ea977abff X-Openstack-Ironic-Api-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_driver_factory.HardwareTypeLoadTestCase.test_build_driver_for_task_not_fake [0.038591s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_deleting_allocation_in_maintenance [0.051420s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces [0.026908s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_212_drivers_driver_name_get_member [0.057696s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b28bb4c8-9ca9-42a1-ae48-76e2eb6ebe7c X-Openstack-Ironic-Api-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_driver_factory.HardwareTypeLoadTestCase.test_enabled_supported_interfaces_non_default [0.026900s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_fix_broken_interface [0.050358s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_existing [0.022489s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_213_drivers_driver_name_get_observer [0.058258s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-8fca7dce-9b56-46b3-85eb-212c56b66219 X-Openstack-Ironic-Api-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_driver_factory.HardwareTypeLoadTestCase.test_get_hardware_type_missing [0.022363s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_from_invalid_driver [0.051276s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_rescue_interface [0.022892s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_invalid_storage_interface [0.024117s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_214_drivers_properties_get_admin [0.058600s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-9dd85f5a-efaa-4c8e-98f3-623125db5ba8 X-Openstack-Ironic-Api-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.conductor.test_manager.UpdateNodeTestCase.test_update_node_hardware_type [0.055453s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_raid_interface_no_default [0.028659s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_field_with_broken_interface [0.031246s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_rescue_interface_default_from_conf [0.028641s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_215_drivers_properties_get_member [0.057473s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-063578e9-00c1-4627-8340-9a28e65c0349 X-Openstack-Ironic-Api-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.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface [0.027878s] ... ok {3} ironic.tests.unit.common.test_driver_factory.HardwareTypeLoadTestCase.test_no_storage_interface_default_from_conf [0.026108s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_216_drivers_properties_get_observer [0.057245s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/drivers/fake-driverz/properties WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-1e246128-2735-42fd-95d6-18d82bae9193 X-Openstack-Ironic-Api-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.common.test_driver_factory.HardwareTypeLoadTestCase.test_none_storage_interface [0.029046s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_217_drivers_raid_logical_disk_properties_get_admin [0.058639s] ... 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-fbf13e59-2fe1-4f30-8f0e-b5f86aa223df X-Openstack-Ironic-Api-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.common.test_driver_factory.StorageInterfaceFactoryTestCase.test_build_interface_for_task [0.041023s] ... ok {3} ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_supported [0.020614s] ... ok {3} ironic.tests.unit.common.test_driver_factory.WarnUnsupportedDriversTestCase.test__warn_if_unsupported_with_unsupported [0.019978s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_218_drivers_raid_logical_disk_properties_get_member [0.057282s] ... 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-2becceb8-0a2f-4951-9f15-cc9f6d531b04 X-Openstack-Ironic-Api-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.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_config [0.022585s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_endpoint_less_than_download_delay [0.020550s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_multiple_containers [0.025290s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_219_drivers_raid_logical_disk_properties_get_observer [0.057862s] ... 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-aa2f80f5-ab6b-4970-8dfe-b7e1a7e56dbc X-Openstack-Ironic-Api-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.common.test_glance_service.TestGlanceSwiftTempURL.test__validate_temp_url_no_key_no_exception [0.021459s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url [0.028393s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_220_drivers_vendor_passthru_methods_get_admin [0.056851s] ... 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-eabe1491-90ef-4edb-81d4-7e1f871d1182 X-Openstack-Ironic-Api-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_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected [0.029523s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix [0.028323s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_221_drivers_vendor_passthru_methods_get_member [0.058307s] ... 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-315230a8-51e2-41a5-899c-aaaeaa67cc49 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_222_drivers_vendor_passthru_methods_get_observer [0.057610s] ... 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-ded1ae39-3e11-4464-839e-47d1d51f03a6 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_223_drivers_vendor_passthru_get_admin [0.058630s] ... 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-5ab710fd-25c9-488d-b9ad-9eecec9d727a X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_224_drivers_vendor_passthru_get_member [0.060584s] ... 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-523559b9-368e-45d9-aa65-8bae20c058e0 X-Openstack-Ironic-Api-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_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_account_detected_with_prefix_underscore [0.243832s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_225_drivers_vendor_passthru_get_observer [0.067167s] ... 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-b29b9fe6-c80e-403a-a109-1de0e4945874 X-Openstack-Ironic-Api-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_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_detected [0.030508s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_endpoint_with_suffix [0.029662s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_226_drivers_vendor_passthru_post_admin [0.061510s] ... 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-5eb3e50f-68dc-4f89-ad44-d817ebea4fb7 X-Openstack-Ironic-Api-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_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_invalid_image_info [0.029038s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_key_detected [0.027631s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_227_drivers_vendor_passthru_post_member [0.060857s] ... 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-3893f2db-63ab-41f3-92e3-aef8cbfe12b4 X-Openstack-Ironic-Api-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_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_multiple_containers [0.028732s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_no_key_detected [0.025674s] ... ok {3} ironic.tests.unit.common.test_glance_service.TestGlanceSwiftTempURL.test_swift_temp_url_url_bad_no_info [0.019718s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_228_drivers_vendor_passthru_post_observer [0.060752s] ... 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-0d1870da-6186-4529-8292-79f4b74bfb79 X-Openstack-Ironic-Api-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_image_publisher.SwiftPublisherTestCase.test__append_filename_param_with_filename [0.021851s] ... ok {3} ironic.tests.unit.common.test_image_publisher.SwiftPublisherTestCase.test__append_filename_param_with_qs [0.021705s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_allowed_state [0.834969s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_229_drivers_vendor_passthru_put_admin [0.060022s] ... 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-13b1c6fa-2ec3-4a28-8c44-73bf802bf648 X-Openstack-Ironic-Api-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_image_publisher.SwiftPublisherTestCase.test__append_filename_param_without_qs [0.020911s] ... ok {3} ironic.tests.unit.common.test_image_publisher.SwiftPublisherTestCase.test_publish [0.030473s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_230_drivers_vendor_passthru_put_member [0.062707s] ... 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-663e547c-07e1-424b-8c94-5195373c9e4d X-Openstack-Ironic-Api-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_image_publisher.SwiftPublisherTestCase.test_unpublish [0.032248s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy [0.034856s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_copy_fail [0.025540s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_hard_link [0.024463s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_download_symlink [0.025297s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_show [0.020625s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href [0.019606s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_empty_allowlist [0.020161s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_in_allowlist [0.020815s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_not_in_allowlist [0.020305s] ... ok {3} ironic.tests.unit.common.test_image_service.FileImageServiceTestCase.test_validate_href_path_not_found_or_not_file [0.019853s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_custom [0.019520s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_231_drivers_vendor_passthru_put_observer [0.267064s] ... 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-ceb63986-3133-40c2-8532-b291625f5389 X-Openstack-Ironic-Api-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_images.IronicImagesTestCase.test_converted_size_estimate_default [0.019804s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_converted_size_estimate_raw_smaller [0.019148s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_download_size [0.019538s] ... ok {1} 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.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_maintenance [0.400122s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service [0.025374s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw [0.023737s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_233_drivers_vendor_passthru_delete_observer ... SKIPPED: not updated for scope testing {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw_combined_algo [0.023652s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw_no_checksum_algo [0.023288s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_in_not_allowed_state [0.088560s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_fetch_image_service_force_raw_with_checksum [0.024704s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_234_nodes_bios_get_admin [0.064127s] ... 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-6aaff23f-df68-4019-9373-fa86d8188e7a X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_images.IronicImagesTestCase.test_fetch_image_service_with_checksum_mismatch [0.024058s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_interface_invalid [0.056101s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_image_service [0.019349s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_invalid_driver [0.028379s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_show_no_image_service [0.019164s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_235_nodes_bios_get_member [0.066152s] ... 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-8a5d3c68-eca6-48e4-8adf-7c83c9c1723f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_images.IronicImagesTestCase.test_image_to_raw [0.024989s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_maintenance_set_false [0.040631s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_already_iso [0.022472s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_already_raw_format [0.022825s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_236_nodes_bios_get_observer [0.066048s] ... 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-77429b4e-f30c-410c-a812-f90b1b48b31c X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_manager.UpdateNodeTestCase.test_update_node_maintenance_with_broken_interface [0.041851s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_fails_safety_check [0.022293s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_invalid_state [0.028015s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_not_permitted_format [0.021764s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_reason_without_protected [0.027911s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_not_raw_after_conversion [0.025191s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_237_nodes_bios_bios_setting_get_admin [0.065753s] ... 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-2b160a91-b979-4071-887d-8dc21f2db312 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_images.IronicImagesTestCase.test_image_to_raw_safety_check_disabled [0.025205s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_image_to_raw_safety_check_disabled_fails_to_convert [0.026253s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_set [0.062777s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_238_nodes_bios_bios_setting_get_member [0.063810s] ... 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-23ed9d12-1cfc-4428-aa6a-7c43aa5ec340 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_length [0.022245s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_content_type [0.022296s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_other_error [0.018466s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_protected_unset [0.071515s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_239_nodes_bios_bios_setting_get_observer [0.066384s] ... 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-681560ad-317e-468b-bfd5-5a3e68891746 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_images.IronicImagesTestCase.test_is_source_a_path_redirect [0.023496s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_returns_none [0.018392s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_invalid_state [0.027604s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_source_a_path_simple [0.018962s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_reason_without_retired [0.027608s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_explicit [0.019182s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_240_conductors_get_admin [0.059721s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-07faba7e-8880-4b75-842c-d2154a30a5a3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_images.IronicImagesTestCase.test_is_whole_disk_image_no_img_src [0.019174s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image [0.018388s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_image_with_type [0.018665s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_241_conductors_get_member [0.058387s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-4c584101-4662-432e-83d8-0a4d3ddf060f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_set [0.066747s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_partition_non_glance [0.019470s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_image [0.018499s] ... ok {3} ironic.tests.unit.common.test_images.IronicImagesTestCase.test_is_whole_disk_image_whole_disk_non_glance [0.019279s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_242_conductors_get_observer [0.059529s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-5da763c0-d434-43b0-849c-307ac20c48da X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.UpdateNodeTestCase.test_update_node_retired_unset [0.087488s] ... ok {3} ironic.tests.unit.common.test_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive [0.053297s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_243_conductors_hostname_get_admin [0.059666s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-eea098d3-4251-48df-abce-db639501e86e X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_kickstart_utils.KSUtilsTestCase.test_prepare_config_drive_in_swift [0.048969s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_244_conductors_hostname_get_member [0.059354s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3aa98df0-eafc-42ed-ab81-1d8b3e2f4608 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_network.GetPortgroupByIdTestCase.test_portgroup_by_id [0.048870s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_245_conductors_hostname_get_observer [0.059199s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/conductors/test-conductor-node WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-2fcd2818-52ed-4682-9684-3db5a8829fc3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_network.GetPortgroupByIdTestCase.test_portgroup_by_id_no_such_portgroup [0.044031s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_node_with_reset_interfaces [0.199757s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_246_allocations_post_admin [0.065074s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-27b135c1-1270-4963-aa30-d5b6b0c8b082 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_neutron.TestNeutronNetworkInterfaceMixin.test_get_network_names_and_uuids [0.098507s] ... ok {1} 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. {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_01 [0.022629s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_allowed_state [0.112233s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_248_allocations_post_observer [0.074496s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/allocations WITH {'resource_class': 'CUSTOM_TEST'} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-07313a8b-2c02-4e14-8b2e-36c1d85fc6a6 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_249_allocations_get_admin [0.067672s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-3faea10d-4065-47b0-86e4-7479a66dd2d3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_no_previous_value [0.131407s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_250_allocations_get_member [0.062037s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-9b2ed227-39e3-4ffc-8ad3-f932b2c11af1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_policy.PolicyInCodeTestCase.test_creds_02 [0.214848s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_03 [0.020865s] ... ok {2} ironic.tests.unit.conductor.test_manager.UpdateNodeTestCase.test_update_resource_class_not_allowed [0.077191s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_04 [0.020178s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_251_allocations_get_observer [0.060765s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-f8d773cc-caed-4c6f-a742-33da65a12006 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_policy.PolicyInCodeTestCase.test_creds_05 [0.020823s] ... ok {2} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_exclusive [0.041417s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_06 [0.021201s] ... ok {2} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_interface_check [0.027910s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_07 [0.019948s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_252_allocations_allocation_id_get_admin [0.063067s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/93eca13d-990b-457d-b496-fb03aa622562 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-01c2632b-d249-422b-a9f9-55d9b74ff10f X-Openstack-Ironic-Api-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 93eca13d-990b-457d-b496-fb03aa622562 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_08 [0.020903s] ... ok {2} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_limit [0.027540s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_09 [0.020398s] ... ok {2} ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_never_run [0.025804s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_10 [0.020687s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_253_allocations_allocation_id_get_member [0.064220s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/a16319bd-2f78-4102-a553-d7cceeb5ba63 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-265966bc-0e52-4277-ba01-889b68672bb1 X-Openstack-Ironic-Api-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 a16319bd-2f78-4102-a553-d7cceeb5ba63 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_11 [0.020122s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_12 [0.019475s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_13 [0.021317s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_254_allocations_allocation_id_get_observer [0.068229s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/allocations/a60822e7-7e9b-4238-a175-a0a5fdfb8656 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-ef32fb82-fc68-4bcb-bf03-5f0bdb05f5c8 X-Openstack-Ironic-Api-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 a60822e7-7e9b-4238-a175-a0a5fdfb8656 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_14 [0.021667s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_15 [0.023128s] ... ok {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_16 [0.022877s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_255_allocations_allocation_id_patch_admin [0.070157s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/2174d538-2501-4191-9dc7-cc7da50173a7 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-c5b62c65-425f-4446-b7c2-cc093298b6d2 X-Openstack-Ironic-Api-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 2174d538-2501-4191-9dc7-cc7da50173a7 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_policy.PolicyInCodeTestCase.test_creds_17 [0.021485s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.CleanUpPxeEnvTestCase.test__clean_up_pxe_env [0.041481s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_256_allocations_allocation_id_patch_member [0.064744s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/40c3c961-634a-4215-8a0f-600e20c46ac9 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-5dbd99fc-ac20-4362-bbc2-5e41b30dff1a X-Openstack-Ironic-Api-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 40c3c961-634a-4215-8a0f-600e20c46ac9 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_grub_mac_path [0.025209s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_ip_address_path [0.025215s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path [0.024594s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_257_allocations_allocation_id_patch_observer [0.065200s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/allocations/888fe724-46ba-4750-9213-7bb5f1698b60 WITH [{'op': 'replace', 'path': '/extra', 'value': {'test': 'testing'}}] GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-7ce3b586-7321-495e-a7cd-9e87d8c0d75a X-Openstack-Ironic-Api-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 888fe724-46ba-4750-9213-7bb5f1698b60 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__get_pxe_mac_path_ipxe [0.024578s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__link_ip_address_pxe_configs [0.043936s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_258_allocations_allocation_id_delete_admin [0.068595s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/5ec368f8-ed61-4ae7-9f79-e634d8cc429f GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-41682bd5-99d1-46a3-8420-e168598134f3 X-Openstack-Ironic-Api-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 5ec368f8-ed61-4ae7-9f79-e634d8cc429f could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_infiniband_mac_pxe_configs [0.049846s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_259_allocations_allocation_id_delete_member [0.061574s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/881c7115-3516-411d-afbe-fb51348f7d52 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-168b4965-9e2a-44cf-b7a2-a117d2f2f21b X-Openstack-Ironic-Api-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 881c7115-3516-411d-afbe-fb51348f7d52 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_ipxe_configs [0.048898s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_260_allocations_allocation_id_delete_observer [0.068383s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/allocations/415656d1-f121-4cf2-8d17-f92992445462 GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-b128e726-9c4c-477f-ac80-7d1af35140ed X-Openstack-Ironic-Api-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 415656d1-f121-4cf2-8d17-f92992445462 could not be found.\", \"debuginfo\": null}"} {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test__write_mac_pxe_configs [0.051777s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config [0.057787s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_261_nodes_allocation_get_admin [0.076155s] ... 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-a5a53314-6ed1-449d-8451-2c498ec2a39f X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi [0.055985s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_262_nodes_allocation_get_member [0.065914s] ... 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-c6c239f9-5d51-4535-89ef-0e3eb9cdad27 X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_instance_info [0.056064s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_263_nodes_allocation_get_observer [0.063880s] ... 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-fcbc8f2a-51ec-4e53-b21f-60935eaf98e7 X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_mac_address [0.052609s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_264_nodes_allocation_delete_admin [0.063048s] ... 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-494eaf68-7a3b-4ede-9c2d-b25bf0aa3633 X-Openstack-Ironic-Api-Maximum-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.common.test_pxe_utils.TestPXEUtils.test_clean_up_pxe_config_uefi_no_ipaddress [0.050901s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script [0.031910s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_already_exists [0.026737s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_265_nodes_allocation_delete_member [0.075817s] ... 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-a9fd37d5-9e3b-46cb-bf53-0b3a330b3da0 X-Openstack-Ironic-Api-Maximum-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.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_copy_file_different [0.028195s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_ipxe_boot_script_fallback [0.027394s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_266_nodes_allocation_delete_observer [0.068779s] ... 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-17ab7161-da5a-4a6c-b1c8-aaf573f9c887 X-Openstack-Ironic-Api-Maximum-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.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config [0.045801s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_bios [0.042852s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_267_deploy_templates_post_admin [0.069368s] ... 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-6855d5a7-0f00-47fd-81dc-bde7baab32b5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_existing_dirs_uefi [0.045177s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_268_deploy_templates_post_member [0.071468s] ... 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-647445fa-8850-422d-8bb6-1a8f3361b459 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_set_dir_permission [0.045484s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_grub [0.043095s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_269_deploy_templates_post_observer [0.068405s] ... 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-a7fa8f33-bcd0-4290-b2e4-f7f7eab9891f X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_ipxe [0.045507s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_create_pxe_config_uefi_mac_address [0.042459s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_grub_config [0.034886s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_anaconda [0.036006s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_iso [0.035967s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_ramdisk [0.036722s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_270_deploy_templates_get_admin [0.260564s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-cea8a92a-7365-4136-85d6-ca461d3c29ec X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config [0.037374s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_multipath [0.035650s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_271_deploy_templates_get_member [0.059823s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-ef7c3f0d-a6ba-45f8-8ad7-4cb46b9218a0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_default_ipxe_boot_from_volume_config_no_extra_volumes [0.038062s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_boot_script [0.026349s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_272_deploy_templates_get_observer [0.059592s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-de4b4982-80c3-44a3-9dfb-3af4052371b1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_default_ipxe_config [0.038095s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_default_ipxe_timeout_config [0.036039s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_273_deploy_templates_deploy_template_id_get_admin [0.060796s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/6c967346-73a7-4dc7-887e-bd6ae651e00c WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-45f840c5-60e0-4ce0-8a1f-94b7c25c2505 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_default_pxe_config [0.029526s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_274_deploy_templates_deploy_template_id_get_member [0.065636s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/3d412115-c57b-4b35-891f-187930340991 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-d9ee38f4-1d07-48a0-96d3-e57c741dc684 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance [0.038940s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_bios [0.042167s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_275_deploy_templates_deploy_template_id_get_observer [0.068410s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/deploy_templates/9d03dc4c-c292-4c98-a880-67589ef21015 WITH {} GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-8dc7b923-5f21-447c-9d7c-ae3b01569345 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_http_ipv4 [0.043417s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_http_ipv6 [0.041067s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_276_deploy_templates_deploy_template_id_patch_admin [0.070232s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/f94ad377-9fee-4d24-baad-75518745e2d8 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b6776273-736b-4558-acf0-0a58e401b5f3 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_http_ipxe_ipv4 [0.041000s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_277_deploy_templates_deploy_template_id_patch_member [0.066432s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/b3980472-3b75-4a5f-9c4e-2150eb070850 WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-51fdcb47-ccd9-4268-86cf-94587b00b3e0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_http_ipxe_ipv6 [0.043184s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_278_deploy_templates_deploy_template_id_patch_observer [0.064155s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ PATCH /v1/deploy_templates/bf44258f-613f-47de-a8f2-5e13c0972a4d WITH [{'op': 'replace', 'path': '/name', 'value': 'CUSTOM_MAGIC'}] GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-72cba98c-c92e-4e87-891e-ac40e1a8d775 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.api.test_acl.TestRBACScoped.test_scoped_canary_279_deploy_templates_deploy_template_id_delete_admin [0.061562s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/3d84fcba-9aab-4137-bb07-10271c4fe736 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-1c03b872-199f-4a17-9de7-9b1e1dadb7d1 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.TestRBACScoped.test_scoped_canary_280_deploy_templates_deploy_template_id_delete_member [0.064425s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/7d132bfb-5b87-4419-8d8e-9e9fe269ab48 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-6257cdfe-67a0-4725-b3ca-7b375560d275 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_periodics.NodePeriodicTestCase.test_simple [2.056192s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6 [0.235392s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_281_deploy_templates_deploy_template_id_delete_observer [0.062216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/deploy_templates/91c17192-e955-4f52-bb57-e55b340c3d09 GOT Response: 403 Forbidden Content-Type: application/json Openstack-Request-Id: req-b46dc8a0-11c3-4505-a21f-e9d37a373c23 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-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.conductor.test_periodics.NodePeriodicTestCase.test_stop [0.054028s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_dhcp_options_for_instance_ipv6_bios [0.041423s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits [0.030866s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_fallback_ipxe_boot_script [0.027547s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_282_chassis_post_admin [0.063985s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ef5be8de-2a78-4337-a567-224848cec75a X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info [0.026315s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_add_node_traits_replace [0.044444s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_bad_driver_info [0.026598s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_kernel_ramdisk_info_ipxe [0.026928s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_283_chassis_post_member [0.072664s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-16e51c86-fc47-4790-9dc2-11f08e31ace0 X-Openstack-Ironic-Api-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_rpcapi.RPCAPITestCase.test_can_send_create_port_False [0.043185s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_pxe_config_file_path [0.028153s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_create_port_True [0.033267s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info [0.026162s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_false [0.027564s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_284_chassis_post_observer [0.063611s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ POST /v1/chassis WITH {'description': 'test-chassis'} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-d1ad4152-65fb-4ada-990e-dc77c61dfe10 X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_get_rescue_kr_info_ipxe [0.026232s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_can_send_rescue_true [0.025554s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_boot_mode [0.025991s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_285_chassis_get_admin [0.063519s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-a436923c-b4e0-48e6-a17e-1a5c24f6734a X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_link_mac_pxe_configs_with_pxe_disabled [0.050476s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_power_state [0.027534s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config [0.031963s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_change_node_secure_boot [0.027551s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_286_chassis_get_member [0.062325s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-1afb0bad-4e2c-4eee-88e9-1072b9e21430 X-Openstack-Ironic-Api-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.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_clean [0.027159s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_place_common_config_existing_dirs [0.032895s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_deploy [0.028512s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.TestPXEUtils.test_pxe_config_aarch64 [0.041536s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_continue_node_service [0.026922s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_287_chassis_get_observer [0.061440s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ddf3d04e-dae4-4593-b22e-bd5976c445c0 X-Openstack-Ironic-Api-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.common.test_pxe_utils.TestPXEUtils.test_pxe_config_x86_64 [0.038618s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_allocation [0.027172s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_node [0.026570s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_288_chassis_detail_get_admin [0.060400s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-f830564f-d009-436e-8b2c-1888e512d1e5 X-Openstack-Ironic-Api-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.common.test_pxe_utils.iPXEBuildServicePXEConfigTestCase.test_build_service_pxe_config_adopt [0.043418s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_create_port [0.028903s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_allocation [0.027220s] ... ok {3} ironic.tests.unit.common.test_pxe_utils.iPXEBuildServicePXEConfigTestCase.test_build_service_pxe_config_servicing [0.045089s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_289_chassis_detail_get_member [0.063249s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-44bff5f3-3db6-4019-8f40-db2664b8214f X-Openstack-Ironic-Api-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.common.test_qemu_img.ConvertImageTestCase.test_convert_image [0.022195s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_node [0.037297s] ... ok {3} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_flags [0.020753s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_portgroup [0.025319s] ... ok {3} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_just_fails [0.020527s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_290_chassis_detail_get_observer [0.060947s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/chassis/detail WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-ac518d51-966d-4afa-8ae1-0c3be1b888c1 X-Openstack-Ironic-Api-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.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_connector [0.026152s] ... ok {3} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_retries [0.024229s] ... ok {3} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_alternate_error [0.020790s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_destroy_volume_target [0.025904s] ... ok {3} ironic.tests.unit.common.test_qemu_img.ConvertImageTestCase.test_convert_image_retries_and_fails [0.019726s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_clean [0.024131s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_291_chassis_chassis_id_get_admin [0.069471s] ... 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-9941057b-75c2-4fd6-99f3-25d775946ee5 X-Openstack-Ironic-Api-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.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_additional_property [0.020406s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy [0.025066s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_custom_schema [0.019320s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_deploy_with_deploy_steps [0.024371s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_disk_type [0.020862s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_rescue [0.024758s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_int_type [0.019786s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_292_chassis_chassis_id_get_member [0.076356s] ... 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-9b1b5985-99b7-4074-9da8-fe3115e6f935 X-Openstack-Ironic-Api-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.conductor.test_rpcapi.RPCAPITestCase.test_do_node_service [0.024471s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_is_root_volume [0.024199s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_multiple_is_root_volume [0.021451s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_do_node_tear_down [0.024364s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_number_of_phy_disks [0.019081s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_293_chassis_chassis_id_get_observer [0.061779s] ... 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-8c5b50e1-34e8-40c5-afa3-949bdac7d971 X-Openstack-Ironic-Api-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.conductor.test_rpcapi.RPCAPITestCase.test_do_node_unrescue [0.023703s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_physical_disks [0.019586s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_driver_vendor_passthru [0.024104s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_raid_level [0.019153s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_boot_device [0.023952s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_share_physical_disks [0.018892s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_294_chassis_chassis_id_patch_admin [0.061578s] ... 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-069bfa78-e940-428f-a91a-ae27137ba4da X-Openstack-Ironic-Api-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.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_invalid_size_gb [0.019450s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_conductor_for [0.028103s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_max_size_gb [0.019130s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_console_information [0.026707s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_logical_disk [0.022194s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_295_chassis_chassis_id_patch_member [0.064660s] ... 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-46d5a953-320f-4417-b208-89ed1dfda258 X-Openstack-Ironic-Api-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.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_properties [0.027400s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_raid_level [0.020711s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_no_size_gb [0.021012s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_driver_vendor_passthru_methods [0.028872s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay [0.020629s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_indicator_state [0.025952s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_okay_software [0.020180s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_296_chassis_chassis_id_patch_observer [0.071759s] ... 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-a7323554-e74e-47ac-b438-c12580055356 X-Openstack-Ironic-Api-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.conductor.test_rpcapi.RPCAPITestCase.test_get_node_vendor_passthru_methods [0.028304s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_too_few_physical_disks [0.020362s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_with_jbod_volume [0.019193s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_node_with_token [0.028099s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_logical_disks [0.019126s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_297_chassis_chassis_id_delete_admin [0.070793s] ... 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-22b14351-06d2-4dc5-9cb3-bae13fd7148c X-Openstack-Ironic-Api-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}"} {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_raid_logical_disk_properties [0.023750s] ... ok {3} ironic.tests.unit.common.test_raid.ValidateRaidConfigurationTestCase.test_validate_configuration_zero_size_gb [0.018994s] ... ok {3} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_context [0.017396s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic [0.024287s] ... ok {3} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity [0.019214s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_random_topic_no_conductors [0.023789s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_298_chassis_chassis_id_delete_member [0.061846s] ... 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-6b0ab1f2-7ec5-47b4-aac7-fea889ab9198 X-Openstack-Ironic-Api-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.common.test_rpc.TestRequestContextSerializer.test_deserialize_entity_empty_base [0.020481s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_boot_devices [0.026143s] ... ok {3} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_context [0.019335s] ... ok {3} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity [0.019799s] ... ok {3} ironic.tests.unit.common.test_rpc.TestRequestContextSerializer.test_serialize_entity_empty_base [0.019741s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_299_chassis_chassis_id_delete_observer [0.061952s] ... 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-b306f089-482f-4a36-8ab8-eabea4822b59 X-Openstack-Ironic-Api-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.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities [0.018680s] ... ok {3} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_add_to_existing_capabilities [0.017596s] ... ok {3} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_capabilities_not_dict [0.017757s] ... ok {3} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_invalid_capabilities [0.019094s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_300_node_history_get_admin [0.075478s] ... 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-0a36e051-24a3-4bd9-a53f-49308c2d21d5 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_multiple_keys [0.018994s] ... ok {3} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_get_updated_capabilities_replace_to_existing_capabilities [0.018458s] ... ok {3} ironic.tests.unit.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port [0.019136s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_301_node_history_get_member [0.066956s] ... 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-924126d1-5b1d-4305-82c6-187c64a59aaa X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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.common.test_utils.GetUpdatedCapabilitiesTestCase.test_validate_network_port_fail [0.018717s] ... ok {3} ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_fail [0.019083s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_supported_indicators [0.234045s] ... ok {3} ironic.tests.unit.common.test_utils.ValidateConductorGroupTestCase.test_validate_conductor_group_success [0.018939s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_doesnt_cache [0.028262s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_302_node_history_get_observer [0.072666s] ... 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-4e665148-daf4-45e4-b25b-1ba59128ec60 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_allocations.DoAllocateTestCase.test_name_match_first [0.049999s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_doesnt_cache [0.031602s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_driver_known_driver [0.026565s] ... ok {3} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_candidates_do_not_match [0.033482s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_303_node_history_get_entry_admin [0.068436s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/6395094d-87df-4bd2-a2b0-c25bd22c0673 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-49a90b19-65bc-450f-a0fc-575fcb7b8643 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_rpcapi.RPCAPITestCase.test_get_topic_for_driver_unknown_driver [0.027117s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_known_driver [0.025416s] ... ok {3} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_changed_after_lock [0.061849s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_get_topic_for_unknown_driver [0.026389s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_304_node_history_get_entry_member [0.069207s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/c4ef0a2c-21ff-421f-9f02-cd500d4ab9ec WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-40c9c9e5-8861-49ff-b0eb-26f1783f3d08 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_allocations.DoAllocateTestCase.test_nodes_filtered_out [0.039463s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat [0.025346s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_heartbeat_agent_token [0.023443s] ... ok {3} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_filtered_out_project [0.035810s] ... ok {1} ironic.tests.unit.api.test_acl.TestRBACScoped.test_scoped_canary_305_node_history_get_entry_observer [0.069005s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/nodes/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/history/5e9e6579-bf59-4f7f-bb8a-42d463689de4 WITH {} GOT Response: 404 Not Found Content-Type: application/json Openstack-Request-Id: req-3ebd5388-b275-48d9-8268-039eab5769f0 X-Openstack-Ironic-Api-Maximum-Version: 1.93 X-Openstack-Ironic-Api-Minimum-Version: 1.1 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_rpcapi.RPCAPITestCase.test_inject_nmi [0.024049s] ... ok {1} ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_get_arg [0.019029s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_inspect_hardware [0.028935s] ... ok {3} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_nodes_locked [0.055977s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call [0.023340s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_expected_exception [0.026595s] ... ok {3} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_success [0.046880s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch [0.026154s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_host_mismatch_with_rpc_disabled [0.024854s] ... ok {3} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_candidates [0.046214s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_no_conductor_with_rpc_disabled [0.022574s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_call_with_rpc_disabled [0.022724s] ... ok {3} ironic.tests.unit.conductor.test_allocations.DoAllocateTestCase.test_with_traits [0.051628s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast [0.022863s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_local_cast_error [0.022226s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action [0.024180s] ... ok {1} ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_set_arg_types [0.239555s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_action_invalid_version [0.023611s] ... ok {1} ironic.tests.unit.api.test_functions.TestFunctionDefinition.test_signature [0.019583s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions [0.027044s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_exception_success [0.026184s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-de40bc91-4eb4-45d2-85bb-7ff72b3fe273 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}"} {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_object_backport_versions_invalid_version [0.023516s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault [0.027659s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-de7c7ddb-dc89-44cf-b947-17fbcc8949bc 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_rpcapi.RPCAPITestCase.test_object_class_action_versions [0.024530s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug [0.026665s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-a19ad552-f8db-4eb4-9569-672871c4416b 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_rpcapi.RPCAPITestCase.test_object_class_action_versions_invalid_version [0.023599s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_clientfault_debug_tracebacks [0.027990s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 400 Bad Request Content-Type: application/json Openstack-Request-Id: req-067b52c0-fefd-42cf-a943-ba9111bcafd9 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}"} {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits [0.025242s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault [0.026792s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-c603e81b-2d67-4a00-be45-7bfe972d7077 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}"} {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_remove_node_traits_all [0.024911s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_rpc_disabled [0.021911s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug [0.027628s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-84ad668f-8e27-43db-a7d6-7a0b4587366d 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.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive [0.264241s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_serialized_instance_has_uuid [0.021058s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_on_serverfault_debug_tracebacks [0.026394s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-8813474e-9582-422a-8186-4a4340b40b8c 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.6.dev2/ironic/api/method.py\\\", line 42, in callfunction\\n result = f(self, *args, **kwargs)\\n\\n File \\\"/builddir/build/BUILD/ironic-26.1.6.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\"}"} {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_boot_device [0.023965s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_remote_error_success [0.026216s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-147da13f-3887-43b2-aaa3-a40e28db5094 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}"} {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_set_console_mode [0.024220s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_db_conn [0.066262s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback [0.026307s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-1787a0df-4789-4680-a67a-2768394dc269 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_rpcapi.RPCAPITestCase.test_set_indicator_state [0.028960s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug [0.027486s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-89aabf37-68d2-42fc-b2d4-24457e7dfe62 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_rpcapi.RPCAPITestCase.test_set_target_raid_config [0.022681s] ... ok {1} ironic.tests.unit.api.test_hooks.TestNoExceptionTracebackHook.test_hook_without_traceback_debug_tracebacks [0.025742s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 500 Internal Server Error Content-Type: application/json Openstack-Request-Id: req-b4a16280-03e9-424c-8e34-e270a17123c8 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.6.dev2/ironic/api/method.py\\\", line 42, in callfunction\\n result = f(self, *args, **kwargs)\\n\\n File \\\"/builddir/build/BUILD/ironic-26.1.6.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.conductor.test_base_manager.KeepAliveTestCase.test__conductor_service_record_keepalive_failed_error [0.065188s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_node [0.022960s] ... ok {1} ironic.tests.unit.api.test_hooks.TestPolicyDeprecation.test_policy_deprecation_check [0.020746s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_port [0.023586s] ... ok {1} ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_host_url [0.025255s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_portgroup [0.022678s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_conductor_shutdown_flag [0.066005s] ... ok {1} ironic.tests.unit.api.test_hooks.TestPublicUrlHook.test_before_public_endpoint [0.024309s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_connector [0.022697s] ... ok {1} ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_get_request [0.026753s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_update_volume_target [0.022714s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_validate_driver_interfaces [0.024041s] ... ok {1} ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_invalid_cors_options_request [0.027363s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_waits_on_workerpool [0.064925s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vendor_passthru [0.024159s] ... ok {1} ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_get_request [0.032965s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_attach [0.023374s] ... ok {1} ironic.tests.unit.api.test_middleware.TestCORSMiddleware.test_valid_cors_options_request [0.025168s] ... ok {2} ironic.tests.unit.conductor.test_rpcapi.RPCAPITestCase.test_vif_detach [0.021837s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_del_host_with_mdns [0.065886s] ... ok {1} ironic.tests.unit.api.test_root.TestRoot.test_get_root [0.024926s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET / WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-c66bc12f-337e-4498-8d33-5e0277bda131 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_rpcapi.RPCAPITestCase.test_vif_list [0.022706s] ... ok {1} ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors [0.025408s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/foo WITH {} GOT Response: 404 Not Found Content-Type: application/json {"error_message": "{\"code\": 404, \"title\": \"Not Found\", \"description\": \"\"}"} {1} ironic.tests.unit.api.test_root.TestRoot.test_no_html_errors2 [0.025791s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ DELETE /v1/ GOT Response: 405 Method Not Allowed Content-Type: application/json Openstack-Request-Id: req-96b73844-90c2-48d6-a4be-649a4bcef1a4 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.conductor.test_base_manager.StartStopTestCase.test_prevent_double_start [0.065166s] ... ok {1} ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_22_root [0.025321s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b2bb0957-abeb-4ceb-99d4-845c58c20d08 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"}]} {1} ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_23_root [0.028008s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-e5786593-f408-4f39-a964-94716f964616 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"}]} {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_clears_conductor_locks [0.077125s] ... ok {1} ironic.tests.unit.api.test_root.TestV1Root.test_get_v1_32_root [0.026818s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-b2266bf1-66f0-451d-80de-077e87538f98 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.api.test_root.TestV1Root.test_get_v1_root [0.026125s] ... ok Captured stdout: ~~~~~~~~~~~~~~~~ GET /v1/ WITH {} GOT Response: 200 OK Content-Type: application/json Openstack-Request-Id: req-d134a067-67dd-4891-bb64-080f3e193501 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.cmd.test_status.TestUpgradeChecks.test__check_allocations_table_latin1 [0.026071s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_dbapi_single_call [0.057803s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeCleanTestChildNodes.test_do_next_clean_step_with_children [0.193924s] ... ok {1} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_allocations_table_myiasm [0.030290s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_hw_type_register [0.039958s] ... ok {1} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_allocations_table_myiasm_both [0.024472s] ... ok {1} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_allocations_table_ok [0.020346s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_hw_types [0.035126s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_fails_on_missing_driver [0.023998s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeCleanTestChildNodes.test_do_next_clean_step_with_children_by_uuid [0.117923s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceAbortTestCase.test__do_node_cleanhold_abort_tear_down_fail [0.047091s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceAbortTestCase.test__do_node_service_abort_tear_down_fail [0.047207s] ... ok {1} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions [0.193372s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceAbortTestCase.test_do_node_service_abort_early [0.049310s] ... ok {1} ironic.tests.unit.cmd.test_status.TestUpgradeChecks.test__check_obj_versions_bad [0.029563s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_and [0.019852s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceAbortTestCase.test_do_node_service_abort_with_step [0.047258s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_recover_nodes_stuck [0.224841s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_boolean [0.019660s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args [0.020007s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_args_kwargs [0.019583s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_clean_step_automated_execute_fail [0.060754s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_conductor [0.069411s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_function [0.019769s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_decorated_kwargs [0.018869s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_integer [0.019704s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mac_address [0.022037s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_automated_fail_in_tear_down_service [0.078005s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mandatory [0.022410s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_mixed_unvalidated [0.021521s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_names [0.115086s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_automated_last_step_noop [0.055130s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_name [0.022040s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_or [0.023427s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_registers_driver_specific_tasks [0.040648s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string [0.023856s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_string_list [0.020408s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_automated_no_steps [0.082744s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_unexpected_args [0.019795s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_json_rpc [0.066301s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid [0.018699s] ... ok {1} ironic.tests.unit.common.test_args.ValidateDecoratorTest.test_uuid_or_name [0.018981s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_bad_step_return_value [0.059750s] ... ok {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_empty_response [0.020313s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_json_rpc_port [0.062799s] ... ok {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_multiline [0.021411s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_next_service_step_manual_last_step_noop [0.054130s] ... ok {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_multiline_no_file [0.021799s] ... ok {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_nomatch_line [0.020695s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns [0.068720s] ... ok {1} ironic.tests.unit.common.test_checksum_utils.IronicChecksumUtilsGetChecksumTestCase.test_get_checksum_from_url_one_line [0.019508s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service [0.056035s] ... ok {1} ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context [0.020325s] ... ok {1} ironic.tests.unit.common.test_context.RequestContextTestCase.test_create_context_with_environ [0.021480s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_mdns_and_debug [0.066006s] ... ok {1} ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict [0.020445s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_automated_network_validate_fail [0.059419s] ... ok {1} ironic.tests.unit.common.test_context.RequestContextTestCase.test_from_dict_older_api_server [0.018535s] ... ok {1} ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_with_context [0.018364s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_with_no_enabled_interfaces [0.058783s] ... ok {1} ironic.tests.unit.common.test_context.RequestContextTestCase.test_thread_without_context [0.018929s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_automated_power_validate_fail [0.057019s] ... ok {1} ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_dict_get_auth_token_info [0.018565s] ... ok {1} ironic.tests.unit.common.test_context.RequestContextTestCase.test_to_policy_values [0.017834s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_fallback [0.021547s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_start_without_jsonrpc_port_pined_version [0.062710s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_disable_ramdisk [0.054558s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername [0.022734s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_no_answer_drivername_node [0.025686s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_manual_network_validate_fail [0.053974s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_one [0.024013s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_clears_conductor_locks [0.075398s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_two [0.022251s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_manual_power_validate_fail [0.054894s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_calculated_with_unsupported [0.022480s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_check_exception_IncompatibleInterface [0.027793s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_network_error_fail [0.054092s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_additional_defaults [0.023938s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_from_config [0.023990s] ... ok {1} ironic.tests.unit.common.test_driver_factory.DefaultInterfaceTestCase.test_network_from_additional_defaults_hardware_type [0.021393s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_prepare_service_active [0.067028s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_doesnt_unregister_conductor [0.260854s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_uninitialized_conductor [0.037020s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_stop_unregisters_conductor [0.064014s] ... ok {1} ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task [0.251503s] ... ok {3} ironic.tests.unit.conductor.test_base_manager.StartStopTestCase.test_warning_on_low_workers_pool [0.068142s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_prepare_service_fail [0.276822s] ... ok {1} ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_default_is_flat [0.046999s] ... ok {1} ironic.tests.unit.common.test_driver_factory.NetworkInterfaceFactoryTestCase.test_build_driver_for_task_unknown_network_interface [0.035617s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_clean_abort_tear_down_fail [0.045629s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_prepare_service_wait [0.054860s] ... ok {1} ironic.tests.unit.common.test_driver_factory.NewFactoryTestCase.test_new_driver_factory_unknown_entrypoint [0.021586s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_capture_region [0.019119s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test__do_node_cleanhold_abort_tear_down_fail [0.043059s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_get_inspector [0.017824s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like [0.027868s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test_do_node_clean_abort_early [0.043380s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test__do_node_service_steps_fail [0.088423s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_file_like_eats_error [0.026850s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanAbortTestCase.test_do_node_clean_abort_with_step [0.042489s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_continue_node_service [0.040660s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like [0.033041s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorInfra.test_info_wrapper_iter_like_eats_error [0.027461s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_continue_node_service_no_skip_step [0.039850s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_bad_step_return_value [0.057240s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_over_limit [0.019422s] ... ok {1} ironic.tests.unit.common.test_format_inspector.TestFormatInspectorsTargeted.test_vhd_table_under_limit [0.017961s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_execute_fail [0.056155s] ... ok {1} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_automatic_retry [0.036142s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_all [0.079508s] ... ok {1} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_driver_not_found [0.033442s] ... ok {1} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success [0.032513s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_fail_in_tear_down_cleaning [0.075299s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_all_disable_ramdisk [0.078355s] ... ok {1} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_hardware_type_success_groups [0.033684s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_last_step_noop [0.054274s] ... ok {1} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_reset_interval [0.031138s] ... ok {1} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_reset_interval_not_happen_sqlite [0.029034s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_collect_logs [0.078899s] ... ok {1} ironic.tests.unit.common.test_hash_ring.HashRingManagerWithGroupsTestCase.test_hash_ring_manager_uncached [0.026164s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_automated_no_steps [0.074124s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_file_image_service [0.022162s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_continue_from_last_cleaning [0.055222s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service [0.027865s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_glance_image_service_url [0.019506s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_fast_track [0.074978s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_http_image_service [0.019643s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_clean_step_manual_continue_from_last_cleaning [0.054290s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_https_image_service [0.019793s] ... ok {1} ironic.tests.unit.common.test_image_service.ServiceGetterTestCase.test_get_image_service_invalid_image_ref [0.019732s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_last_step_noop_fast_track [0.052645s] ... ok {1} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_adapter_from_config [0.016489s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_agent_busy [0.055445s] ... ok {1} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth [0.016860s] ... ok {1} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_auth_fail [0.017449s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_bad_step_return_value [0.056356s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_automated_first_step_async [0.057478s] ... ok {1} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_service_auth [0.041500s] ... ok {1} ironic.tests.unit.common.test_keystone.KeystoneTestCase.test_get_session [0.017178s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_execute_fail [0.057435s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_handles_hold_from_active [0.057171s] ... ok {1} ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id [0.055186s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_handles_hold_from_wait [0.056918s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_fail_in_tear_down_cleaning [0.078549s] ... ok {1} ironic.tests.unit.common.test_network.GetPortsByPortgroupIdTestCase.test_ports_by_portgroup_id_empty [0.047032s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_manual_first_step_async [0.055210s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_last_step_noop [0.051742s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_cleaning [0.046646s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_provisioning [0.046291s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_oob_reboot [0.059133s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_manual_no_steps [0.073487s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_during_rescuing [0.045437s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_oob_reboot_fail [0.064002s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_next_clean_step_retired_last_step_change_tgt_state [0.049389s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_no_ports_no_portgroups [0.038975s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated [0.053148s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_next_service_step_oob_reboot_last_step [0.058705s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_port_int_info [0.043050s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_one_portgroup_int_info [0.043175s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios [0.053662s] ... ok {2} ironic.tests.unit.conductor.test_servicing.DoNodeServiceTestCase.test_do_node_service_steps_fail_poweroff [0.068577s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_portgroups_int_info [0.046806s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_exception [0.056258s] ... ok {2} ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_instance_deploy_failure [0.045395s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_get_node_vif_ids_two_ports_int_info [0.047642s] ... ok {2} ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_invalid_parameter_value [0.045238s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_cache_bios_unsupported [0.056416s] ... ok {2} ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_ok [0.045736s] ... ok {1} ironic.tests.unit.common.test_network.TestNetwork.test_remove_vifs_from_node [0.066183s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled [0.059077s] ... ok {2} ironic.tests.unit.conductor.test_steps.GetValidatedStepsFromTemplatesTestCase.test_skip_missing [0.044046s] ... ok {1} ironic.tests.unit.common.test_network.TestRemoveVifsTestCase.test_remove_vifs_from_node_failure [0.069365s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_disabled [0.051739s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments [0.022079s] ... ok {2} ironic.tests.unit.conductor.test_steps.NodeServiceStepsTestCase.test__get_service_steps [0.055437s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_multiple_segments_no_physnet [0.020678s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_failure [0.021993s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_disabled_individual_enabled [0.065396s] ... ok {2} ironic.tests.unit.conductor.test_steps.NodeServiceStepsTestCase.test_set_node_service_steps [0.053539s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_network_missing [0.022826s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_first_arg [0.020972s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment [0.021463s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_excl_lock_task_second_arg [0.020737s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_no_segment_no_physnet [0.019460s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled [0.063110s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_first_arg [0.021612s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_failure [0.018675s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ExclusiveLockDecoratorTestCase.test_with_shared_lock_task_second_arg [0.021033s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_port_missing [0.022587s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_disabled [0.050532s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error [0.022361s] ... ok {1} ironic.tests.unit.common.test_neutron.TestGetPhysnetsByPortUUID.test_get_physnets_by_port_uuid_single_segment [0.022161s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_cancelled [0.021036s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__cache_tftp_images_master_path [0.034261s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_exists [0.021381s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_enabled [0.063479s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info [0.023310s] ... ok {2} ironic.tests.unit.conductor.test_task_manager.ThreadExceptionTestCase.test_set_node_last_error_no_error [0.021374s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_deploy_ramdisk [0.022105s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_cleaning [0.027848s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_ipxe [0.022446s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_enabled_individual_none [0.063171s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_abort_on_conductor_take_over_deploying [0.027786s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test__get_deploy_image_info_missing_deploy_kernel [0.023002s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler [0.030057s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel [0.034460s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_network_validate_fail [0.050955s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanfail [0.033423s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe [0.038220s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_cleanwait [0.030472s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_power_validate_fail [0.051025s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_cache_ramdisk_kernel_ipxe_anaconda [0.038255s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_manual [0.032215s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_fail [0.031470s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_boot_iso [0.045646s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_no_teardown [0.028787s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_kickstart_stage2_missing [0.042304s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleaning_error_handler_tear_down_error [0.032019s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout [0.028598s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_cleanwait_timeout_handler_call [0.029842s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout [0.036309s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_known_exc [0.037686s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_fail [0.263059s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_rescuewait_timeout_unknown_exc [0.036988s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_prepare_clean_wait [0.052743s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_servicewait_timeout [0.031545s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_localboot [0.242577s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_cleanup_servicewait_timeout_handler_call [0.028099s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_no_worker [0.032691s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_whole_disk_image [0.040941s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_automated_steps_fail [0.094215s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_power_state_error_handler_other_error [0.028993s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_no_worker [0.033135s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_boot_option [0.073314s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_maintenance [0.063338s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_provision_error_handler_other_error [0.033300s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler [0.028846s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_get_instance_image_info_with_kickstart_url_http [0.050455s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual [0.050047s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_deploy [0.025168s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_bad_state [0.032311s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_deploy [0.024640s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_ironic_exc [0.032484s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios [0.059425s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_deploy_by_arch [0.023982s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_other_exc [0.030377s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_rescue [0.023046s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_rescuing_error_handler_set_failed_state_false [0.029623s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_from_conf_rescue_by_arch [0.022736s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_exception [0.057422s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_kernel [0.024273s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler [0.028389s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_deploy_ramdisk [0.024219s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_cache_bios_unsupported [0.057030s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_kernel [0.022929s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_missing_rescue_ramdisk [0.023454s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_disable_ramdisk [0.051093s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_deploy [0.024828s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_deploy_by_arch [0.024574s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_mixed_source_rescue [0.023463s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_network_validate_fail [0.058962s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_ramdisk [0.022973s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.PXEInterfacesTestCase.test_parse_driver_info_rescue [0.022087s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_power_validate_fail [0.058100s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_no_fail [0.232973s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe [0.045798s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_no_teardown [0.027396s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_fail [0.063311s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_ipxe_timeout [0.046490s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_servicefail [0.028916s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_servicewait [0.029412s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_prepare_clean_wait [0.070115s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot [0.055228s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_servicing_error_handler_tear_down_error [0.033485s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_no_worker [0.033284s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_and_iscsi_boot_from_lists [0.051825s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_cleaning_error_handler_other_error [0.031990s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_manual_steps_fail [0.090440s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_boot_iso [0.052483s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_no_worker [0.033897s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test__do_node_clean_network_error_fail [0.051906s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_deploying_error_handler_other_error [0.031237s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_ipa_debug [0.050054s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_no_worker [0.031223s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean [0.038157s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_local_boot [0.051413s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_rescue_error_handler_other_error [0.029297s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_continue_node_clean_no_skip_step [0.038284s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_servicing_error_handler_no_worker [0.030402s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue [0.052821s] ... ok {2} ironic.tests.unit.conductor.test_utils.ErrorHandlersTestCase.test_spawn_servicing_error_handler_other_error [0.029396s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_agent_busy [0.050595s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_swift [0.050253s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track [0.043072s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_all [0.075376s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_config_false [0.042172s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_rescue_timeout [0.052814s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info [0.041141s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_automated_first_step_async [0.053995s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_partition [0.048777s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_disabled_in_driver_info_string [0.040190s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_build_pxe_config_options_ipxe_swift_wdi [0.049649s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_collect_logs [0.077595s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_error_blocks [0.045346s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_clean_up_ipxe_config_uefi [0.049169s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_inspected_no_heartbeat [0.040519s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_continue_from_last_cleaning [0.051486s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_bios [0.040246s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_no_heartbeat [0.045708s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_handles_hold_from_active [0.050532s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_instance_ipxe_uefi [0.044441s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_not_in_servicing [0.040121s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_handles_hold_from_wait [0.050242s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6 [0.042623s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_power_off_false [0.042150s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_dhcp_options_for_ipxe_ipv6_uefi [0.043002s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all [0.075669s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_powered_after_heartbeat [0.055015s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options [0.044885s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info [0.039717s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_hexadecimal_lunid [0.042086s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_all_disable_ramdisk [0.076475s] ... ok {2} ironic.tests.unit.conductor.test_utils.FastTrackTestCase.test_is_fast_track_via_driver_info_string [0.041237s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_additional_volume_type [0.042138s] ... ok {2} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_empty [0.025150s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_continue_from_last_cleaning [0.050845s] ... ok {2} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_populated [0.025699s] ... ok {1} ironic.tests.unit.common.test_pxe_utils.iPXEBuildConfigOptionsTestCase.test_get_volume_pxe_options_unsupported_volume_type [0.044229s] ... ok {2} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_dict [0.025785s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier [0.020219s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_manual_first_step_async [0.051551s] ... ok {2} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_build_user_data_as_string [0.024820s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_notifier [0.017913s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_get_sensors_notifier_no_publisher_id [0.017734s] ... ok {2} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_no_configdrive [0.023639s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier [0.018422s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot [0.049896s] ... ok {2} ironic.tests.unit.conductor.test_utils.GetConfigDriveImageTestCase.test_string [0.023464s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_notifier [0.017379s] ... ok {2} ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_no_token_info [0.020891s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_get_versioned_notifier_no_publisher_id [0.017561s] ... ok {2} ironic.tests.unit.conductor.test_utils.GetTokenProjectFromRequestTestCase.test_returns_project_id_if_present [0.019936s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_fail [0.059375s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_disabled [0.034300s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history [0.025945s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_notifications_enabled [0.034215s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_next_clean_step_oob_reboot_last_step [0.054152s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_disaled [0.053360s] ... ok {1} ironic.tests.unit.common.test_rpc.TestUtils.test_init_globals_with_custom_topics [0.034997s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_noop [0.050577s] ... ok {3} ironic.tests.unit.conductor.test_cleaning.DoNodeCleanTestCase.test_do_node_clean_steps_fail_poweroff [0.074920s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_error_severity [0.026384s] ... ok {1} ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_hardware_interfaces [0.074194s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodeHistoryRecordTestCase.test_record_node_history_with_user [0.025985s] ... ok {3} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive [0.041935s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_adopting [0.036821s] ... ok {3} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift [0.042819s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_non_existent_mode [0.036417s] ... ok {3} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_build [0.042892s] ... ok {2} ironic.tests.unit.conductor.test_utils.NodeSetBootModeTestCase.test_node_set_boot_mode_valid [0.037836s] ... ok {3} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout [0.042882s] ... ok {3} ironic.tests.unit.conductor.test_deployments.StoreConfigDriveTestCase.test_store_configdrive_swift_no_deploy_timeout_fallback [0.042313s] ... ok {1} ironic.tests.unit.conductor.test_base_manager.RegisterInterfacesTestCase.test__register_and_validate_no_valid_default [0.269344s] ... ok {2} ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncPostgres.test_models_sync ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {2} ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class [0.019750s] ... ok {2} ironic.tests.unit.db.sqlalchemy.test_models.TestGetClass.test_get_class_bad [0.018249s] ... ok {2} ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_default_value [0.024150s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_all [0.098996s] ... ok {2} ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedDict_type_check [0.022286s] ... ok {2} ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_default_value [0.024767s] ... ok {2} ironic.tests.unit.db.sqlalchemy.test_types.SqlAlchemyCustomTypesTestCase.test_JSONEncodedList_type_check [0.022844s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create [0.024151s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestContinueInspection.test_failure [0.268967s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_async [0.094595s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_name [0.023849s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_create_allocation_duplicated_uuid [0.024028s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestContinueInspection.test_ok [0.051531s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation [0.026597s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_that_does_not_exist [0.024418s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_continue_from_last_step [0.092017s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestContinueInspection.test_ok_asynchronous [0.047478s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_uuid [0.025343s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_destroy_allocation_with_node [0.034638s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_ok [0.050041s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id [0.025189s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_id_that_does_not_exist [0.024228s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_dynamic [0.112271s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_raises_error [0.071721s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name [0.039380s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_name_that_does_not_exist [0.036176s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid [0.026238s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_fast_track [0.106843s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_return_inspect_wait [0.099517s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_by_uuid_that_does_not_exist [0.027107s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list [0.030354s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_return_inspecting [0.054905s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_conductor_affinity [0.034374s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_in_deploywait [0.097255s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_node [0.034280s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_return_other_state [0.058170s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_rsc [0.032765s] ... ok {3} ironic.tests.unit.conductor.test_inspection.TestInspectHardware.test_inspect_hardware_unexpected_error [0.050991s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done [0.093515s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_getting_current [0.101487s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console [0.105101s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_exception_in_background_task [0.096390s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_filter_by_state [0.235474s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_invalid_fields [0.027831s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_last_step_done_with_console_error [0.112406s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_get_allocation_list_sorted [0.030293s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_allocation_not_found [0.026073s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_existing [0.091524s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_conflict [0.031006s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test__do_next_deploy_step_none [0.092820s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_take_over_success [0.030062s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_node_already_locked [0.079123s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation [0.032601s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy [0.056820s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_associated_with_another_node [0.034187s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_first_agent_boot [0.056256s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_duplicated_name [0.027760s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_valid [0.097749s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_node_already_associated [0.039169s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_deploy_no_skip_step [0.055851s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_not_found [0.026336s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_uuid [0.024896s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_validate_fail [0.084457s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_continue_node_steps_validation [0.064015s] ... ok {2} ironic.tests.unit.db.test_allocations.AllocationsTestCase.test_update_allocation_with_node_id [0.033139s] ... ok {3} ironic.tests.unit.conductor.test_manager.ChangeNodeBootModeTestCase.test_change_node_boot_mode_worker_pool_full [0.096915s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_agent_busy [0.097153s] ... ok {3} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy [0.086411s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_bad_step_return_value [0.116042s] ... ok {3} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_deprecated [0.077378s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions [0.274804s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_exception [0.103713s] ... ok {3} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_locked [0.077612s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_handled_exception [0.090953s] ... ok {3} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_worker_pool_full [0.085945s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor [0.190196s] ... ok {3} ironic.tests.unit.conductor.test_manager.ContinueNodeDeployTestCase.test_continue_node_deploy_wrong_state [0.077785s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_conductor_old [0.034896s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_execute_ironic_exception [0.105687s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_handles_hold_from_active [0.052599s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node [0.112891s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_handles_hold_from_wait [0.052734s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_emptyDB [0.180935s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_adopt_failed_no_power_change [0.081623s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_handles_missing_table [0.026195s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_no_steps [0.123081s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_allowed_in_maintenance [0.085212s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot [0.092999s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_associated [0.079205s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_ignore_node [0.172602s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_missing_version_columns [0.025630s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNextDeployStepTestCase.test_do_next_deploy_step_oob_reboot_fail [0.100895s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_broken_driver [0.081463s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_db_error [0.085914s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_disable_fail [0.086641s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_no_version [0.173152s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_console_enabled [0.088199s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_swift_error [0.103594s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_invalid_provision_state [0.078956s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_configdrive_unexpected_error [0.105723s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_node_old [0.179756s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_power_off [0.082608s] ... ok {2} ironic.tests.unit.db.test_api.UpgradingTestCase.test_check_versions_raises_missing_table [0.028885s] ... ok {2} ironic.tests.unit.db.test_node_inventory.DBNodeInventoryTestCase.test_destroy_node_inventory_by_node_id [0.029165s] ... ok {2} ironic.tests.unit.db.test_node_inventory.DBNodeInventoryTestCase.test_get_inventory_by_node_id [0.029893s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_ironic_exception [0.123853s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_exception [0.047950s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_false [0.043431s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_error_old [0.103877s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__disable_secure_boot_true [0.041229s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_create [0.045103s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected [0.281576s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_raises_prepare_error [0.102299s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_glance_image [0.065979s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_protected_provision_state_available [0.077500s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_http_url [0.055880s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_driver_unexpected_exception [0.112676s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__get_boot_iso_swift_image [0.056853s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_reserved [0.075355s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__parse_deploy_info [0.026177s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_destroy_node_with_allocation [0.051798s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_driver_info [0.037984s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test__validate_instance_image_info [0.038701s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_inventory_in_swift_get_destroyed_after_destroying_a_node_by_uuid [0.085110s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy [0.039320s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_inst_info [0.040416s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_inventory_in_swift_not_destroyed_SwiftOSE_maintenance [0.082423s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on [0.047152s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_fast_track [0.296937s] ... ok {3} ironic.tests.unit.conductor.test_manager.DestroyNodeTestCase.test_inventory_in_swift_not_destroyed_SwiftOSE_not_maintenance [0.077245s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeout [0.026743s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_disappears [0.025209s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok [0.101776s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_acquire_node_locked [0.025319s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exit_with_other_exception [0.025746s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_exiting_no_worker_avail [0.025714s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_no_acquire_after_lock [0.025487s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_2 [0.102017s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootPrivateMethodsTestCase.test_prepare_node_for_deploy_sec_boot_on_inst_info [0.247346s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_not_mapped [0.027691s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_to_maintenance_after_lock [0.026309s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance [0.042058s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckInspectWaitTimeoutsTestCase.test__check_inspect_timeouts_worker_limit [0.026887s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume [0.051650s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_ok_configdrive [0.115405s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios [0.053162s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes [0.098396s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test__do_node_deploy_unexpected_prepare_error [0.094671s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance [0.047320s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_alive [0.076629s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_anaconda_cleaning [0.047748s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_do_node_deploy_steps [0.089002s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_anaconda_deploying [0.057577s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_node_validation_in_disabled_bios_boot_mode_fails [0.039755s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_cleaning [0.099736s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_node_validation_in_disabled_uefi_boot_mode_fails [0.037081s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_anaconda_rescuing [0.059241s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_bios [0.043265s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_maintenance [0.081769s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_legacy_false [0.084355s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_instance_boot_from_volume [0.045764s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_exceptions_skipping [0.075845s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_cleaning [0.043817s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_legacy_false_even_if_src_set [0.087667s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_deploying [0.045852s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerCheckOrphanNodesTestCase.test__check_orphan_nodes_release_node_not_locked [0.093989s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_boot.IloPXEBootTestCase.test_prepare_ramdisk_in_rescuing [0.046965s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict [0.024216s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_correct_power_state_on_upgrade_lock [0.030631s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_source_instance [0.083039s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_excluded_capability [0.021549s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_error [0.029680s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test___create_supported_capabilities_dict_gpu_capabilities [0.021303s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_get_power_state_fail [0.028449s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_capabilities_ok [0.022181s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_source_none [0.082613s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail [0.022290s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_maintenance_on_upgrade_lock [0.030332s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_invalid_format [0.022247s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded [0.040006s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_fail_mac_invalid_format [0.022625s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_empty [0.021940s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded2 [0.042052s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_lessee_source_request [0.091458s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_hardware_port_not_dict [0.024857s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__get_essential_properties_ok [0.024025s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_essential_keys_fail_missing_key [0.021753s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_max_retries_exceeded_notify [0.063291s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_inspect.TestInspectPrivateMethods.test__validate_ok [0.021490s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path [0.092598s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_no_power_sync_support [0.037313s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_clean [0.035032s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_power_state_sync_max_retries_gps_exception [0.036325s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_fail_deploy [0.038019s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_retry_then_success [0.028446s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_start_deploy_source_path_none [0.090027s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_not_supported [0.038632s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync [0.035673s] ... ok {1} ironic.tests.unit.conductor.test_deployments.DoNodeDeployTestCase.test_update_fails_on_invalid_boot_mode [0.022180s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__execute_ilo_step_ok [0.036142s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_no_sync_notify [0.060159s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_clean [0.052869s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync [0.030164s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_getting_current [0.092712s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_changed_sync_failed [0.031907s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_environment_error_deploy [0.051590s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_not_set [0.036927s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_clean [0.050690s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged [0.029597s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_exception_in_background_task [0.097859s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_state_unchanged_for_fake_node [0.029564s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_swift_error_deploy [0.052512s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_clean [0.049686s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_existing [0.083948s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_unknown_exception_deploy [0.053061s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_node_already_locked [0.073924s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_clean [0.046570s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_with_logs_deploy [0.048629s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_valid [0.086789s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_validate_fail [0.235104s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_clean [0.051141s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_vendor_detection [0.041156s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_validate_fail [0.080755s] ... ok {3} ironic.tests.unit.conductor.test_manager.ManagerDoSyncPowerStateTestCase.test_wrong_provision_state_on_upgrade_lock [0.029555s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test__write_firmware_sum_final_without_logs_deploy [0.054238s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port [0.050028s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license [0.064163s] ... ok {1} ironic.tests.unit.conductor.test_manager.ChangeNodeSecureBootTestCase.test_change_node_secure_boot_worker_pool_full [0.090837s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_active_node [0.049351s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_activate_license_no_or_invalid_format_license_key [0.048257s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_address_maintenance [0.050244s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate [0.046163s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_cleaning [0.098229s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_active_state_and_maintenance [0.051091s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_fileurl [0.051572s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_deleting_state [0.046730s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_httpurl [0.048899s] ... ok {1} ironic.tests.unit.conductor.test_manager.ConcurrentActionLimitTestCase.test_concurrent_action_limit_deploy [0.084527s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_locked [0.035712s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_add_https_certificate_url_exception [0.049086s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_node_manageable_state [0.053427s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target [0.049341s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_maintenance [0.050097s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_failed [0.049482s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_node_deleting_state [0.048524s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_iscsi_boot_target_in_bios [0.048829s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_conflict [0.046337s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_clear_secure_boot_keys [0.047916s] ... ok {1} ironic.tests.unit.conductor.test_manager.ContinueInspectionTestCase.test_continue_ok [0.256068s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_physnet_validation_failure_inconsistent [0.045514s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_create_csr [0.047639s] ... ok {1} ironic.tests.unit.conductor.test_manager.ContinueInspectionTestCase.test_continue_with_discovery [0.041114s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_port_changed_failure [0.050398s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_flash_firmware_sum_mode_with_component [0.048494s] ... ok {1} ironic.tests.unit.conductor.test_manager.ContinueInspectionTestCase.test_wrong_state [0.062282s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_active_node [0.056412s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_fail [0.046250s] ... ok {1} ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup [0.043239s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_portgroup_enroll_node [0.061918s] ... ok {1} ironic.tests.unit.conductor.test_manager.DestroyPortgroupTestCase.test_destroy_portgroup_node_locked [0.033580s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_next_boot [0.053658s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortTestCase.test_update_port_to_node_in_inspect_wait_state [0.051903s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent [0.050056s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated [0.079407s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup [0.055400s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_device_persistent_fail [0.050702s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort [0.095804s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_association_with_ports [0.090477s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_failure [0.047810s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_automated_abort_last_clean_step [0.092586s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_node_locked [0.038971s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_locked [0.076500s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode [0.248886s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_active_state_and_maintenance [0.090084s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_boot_mode_fail [0.040495s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_deleting_state [0.048193s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual [0.081324s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_properties [0.046602s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_sensor_data [0.046073s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_inspect_wait_state [0.090344s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort [0.093833s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_devices [0.046207s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_1___legacy_bios_only_____bios___ [0.040769s] ... ok {3} ironic.tests.unit.conductor.test_manager.UpdatePortgroupTestCase.test_update_portgroup_to_node_in_manageable_state [0.091293s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_manual_abort_last_clean_step [0.091687s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_2___uefi_only_____uefi___ [0.042819s] ... ok {3} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_attach_virtual_media_http [0.050877s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_get_supported_boot_modes_3___legacy_bios_and_uefi_____uefi____bios___ [0.043500s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_worker_pool_full [0.084363s] ... ok {3} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_attach_virtual_media_local [0.054344s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi [0.048714s] ... ok {3} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_do_attach_virtual_media [0.048426s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_failed [0.049342s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_continue_node_clean_wrong_state [0.079645s] ... ok {3} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_do_attach_virtual_media_fails_on_attach [0.051310s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_inject_nmi_not_supported [0.048902s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_invalid_state [0.079044s] ... ok {3} ironic.tests.unit.conductor.test_manager.VirtualMediaTestCase.test_do_attach_virtual_media_fails_on_prepare [0.053212s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_bios_to_default [0.054375s] ... ok {3} ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_cap [0.021621s] ... ok {3} ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_version_capped [0.021460s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo [0.054504s] ... ok {3} ironic.tests.unit.conductor.test_rpcapi.ConductorRPCAPITestCase.test_versions_in_sync [0.020322s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_maintenance [0.076559s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock [0.030823s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_no_password [0.055836s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_build_driver_exception [0.031115s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_network_validate_fail [0.077787s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_no_retries [0.030159s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_ok [0.060841s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_patient [0.030691s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_exception_then_lock [0.031881s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_ok [0.082116s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_ilo_credential_pass_as_arg_ok [0.060357s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_portgroups_exception [0.032807s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_ports_exception [0.028999s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_reset_secure_boot_keys_to_default [0.049693s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_power_validate_fail [0.076660s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_volconn_exception [0.030909s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_security_parameters_update [0.051155s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_get_voltgt_exception [0.031443s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_reserve_exception [0.029547s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_fail [0.053394s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_node_clean_worker_pool_full [0.090908s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_lock_upgade_exception_no_retries [0.031432s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_invalid_device [0.066686s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_provision_action_unlocks_cleaning_automated [0.097691s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_ok [0.055286s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_fail [0.049427s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_provision_action_unlocks_cleaning_manual [0.111682s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_device_persistent_true [0.049738s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_excl_nested_acquire [0.236040s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode [0.053331s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_init_prepares_fsm [0.031206s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_no_driver [0.031703s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_boot_mode_fail [0.053433s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock [0.032199s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeCleanTestCase.test_do_provision_action_unlocks_deploying [0.131533s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_build_driver_exception [0.029315s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_failed [0.062068s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_portgroups_exception [0.028491s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_ports_exception [0.027694s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_not_support [0.085242s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_in_bios [0.061925s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_volconn_exception [0.031016s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_get_voltgt_exception [0.028544s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_missed_properties [0.057977s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_shared_lock_node_get_exception [0.030134s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_interface_return_failed [0.088031s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after [0.032074s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_with_auth [0.064017s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_exception_while_yielded [0.030329s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_state_set_by_driver [0.089277s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_link_fails [0.029797s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_set_iscsi_boot_target_without_auth [0.061103s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook [0.031434s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_on_error_hook_exception [0.028847s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_auth_failure_logging_threshold [0.046466s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_spawn_after_spawn_fails [0.030783s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock [0.031159s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_clean [0.064346s] ... ok {3} ironic.tests.unit.conductor.test_task_manager.TaskManagerTestCase.test_upgrade_lock_refreshes_fsm [0.041220s] ... ok {3} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_cleaning [0.026039s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_calls_step_foreach_url_deploy [0.066131s] ... ok {3} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_inspecting [0.027244s] ... ok {3} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_none [0.025741s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_clean [0.062805s] ... ok {3} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_provisioning [0.024100s] ... ok {3} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_rescuing [0.023555s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeInspectAbortTestCase.test_do_inspect_abort_succeeded [0.298563s] ... ok {3} ironic.tests.unit.conductor.test_utils.GetAttachedVifTestCase.test_get_attached_vif_tenant [0.024112s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_cleans_all_files_if_exc_thrown_deploy [0.061329s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__calculate_target_state [0.021124s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort [0.051564s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_clean [0.056065s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_db_not_in_sync [0.046123s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_abort_clean_up_fail [0.053815s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_different_state [0.038955s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_doesnt_update_any_if_any_url_fails_deploy [0.053889s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_clean [0.056357s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_failed_getting_state_notify [0.069530s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_bad_state [0.093787s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test__can_skip_state_change_same_state [0.050755s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_checksum_validation_error_deploy [0.056573s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_errors [0.092682s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_already_being_processed [0.049332s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_clean [0.053223s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_failed_getting_state [0.047689s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_invalid_component_type_deploy [0.050174s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescue [0.086722s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_clean [0.052155s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_failed_getting_state_notify [0.072000s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_error_for_no_firmware_url_deploy [0.052612s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_in_same_state [0.055399s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_rescue_returns_rescuewait [0.092279s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_in_same_state_db_not_in_sync [0.051060s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue [0.092920s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_invalid_state [0.065611s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_bad_state [0.085774s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_invalid_state_notify [0.073618s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_keep_last_error [0.052880s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_clean [0.257274s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_ironic_error [0.105044s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_invalid_update_mode_provided_deploy [0.049640s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off [0.053774s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_firmware_sum_mode_with_component [0.044970s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_already [0.061864s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test__do_node_unrescue_other_error [0.094584s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_update_minimum_password_length [0.045370s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_pregenerated_token [0.052548s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_validate [0.046276s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue [0.072055s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_off_storage_detach [0.051741s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_clean [0.045392s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on [0.051584s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_invalid_component_deploy [0.043688s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_invalid_state [0.097758s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_clean [0.047294s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_maintenance [0.041283s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on_notify [0.078039s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_swift_url_deploy [0.047022s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_network_validate_fail [0.057118s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_clean [0.047322s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_power_validate_fail [0.054413s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_management.IloManagementTestCase.test_write_firmware_sum_mode_without_component_deploy [0.045420s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed [0.036132s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_rescue_when_rescue_validate_fail [0.056012s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__attach_boot_iso_if_needed_on_rebuild [0.035253s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state [0.026389s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue [0.068274s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state_fail [0.027087s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_on_storage_attach [0.263169s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__get_power_state_ilo6_redirect [0.028560s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_invalid_state [0.034795s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_invalid_state [0.078119s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_power_reboot [0.056263s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_maintenance [0.044613s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_reboot_no_timeout [0.053279s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_do_node_unrescue_validate_fail [0.040491s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_reboot_storage_attach [0.052139s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_set_power_failure [0.052810s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeRescueTestCase.test_provision_rescue_abort [0.089749s] ... ok {3} ironic.tests.unit.conductor.test_utils.NodePowerActionTestCase.test_node_power_action_set_power_failure_notify [0.077556s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover [0.088260s] ... ok {3} ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_no_change [0.029561s] ... ok {3} ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_existing [0.024479s] ... ok {3} ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_store_new [0.025734s] ... ok {3} ironic.tests.unit.conductor.test_utils.StoreAgentCertificateTestCase.test_take_over [0.025555s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_enabled [0.093886s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits [0.020496s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_empty_instance_traits [0.020234s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_invalid_trait_type [0.019818s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_invalid_type [0.018809s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_missing [0.020083s] ... ok {1} ironic.tests.unit.conductor.test_manager.DoNodeTakeOverTestCase.test__do_takeover_with_console_exception [0.101584s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidateInstanceInfoTraitsTestCase.test_validate_instance_info_traits_no_instance_traits [0.021383s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_1 [0.048835s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_invalid_agent_token [0.096276s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_create_2 [0.053250s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_1 [0.047336s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_invalid_agent_token_older_version [0.089159s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_2 [0.052982s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_1 [0.057716s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_invalid_newer_version [0.089898s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_no_physnet_update_add_2 [0.058415s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_1 [0.052235s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_2 [0.054852s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_create_3 [0.055275s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_1 [0.050485s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_tls_required [0.306731s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_2 [0.054337s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_3 [0.053543s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_agent_token [0.097215s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_1 [0.060028s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_2 [0.051155s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_agent_verify_ca [0.099242s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_1_port_portgroup_w_physnet_update_add_3 [0.056952s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_1 [0.049259s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_agent_version [0.095376s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_no_physnet_update_2 [0.054479s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_no_required_agent_token [0.088887s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_1 [0.047888s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_2 [0.051232s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_with_required_agent_token [0.090332s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_2_port_portgroup_w_physnet_update_3 [0.052377s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_1 [0.041252s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_without_agent_version_anaconda [0.089841s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_create_2 [0.042498s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_1 [0.047457s] ... ok {1} ironic.tests.unit.conductor.test_manager.HeartbeatTestCase.test_heartbeat_without_version [0.084577s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_disappears_on_acquire [0.026868s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_empty_portgroup_update_2 [0.049196s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_enroll_on_acquire [0.026865s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_in_power_transition_on_acquire [0.027891s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets [0.056196s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_locked_on_acquire [0.030421s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_in_maintenance_on_acquire [0.027799s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_inconsistent_physnets_fix [0.052185s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_not_mapped [0.027622s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_create [0.040713s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_failed [0.030320s] ... ok {3} ironic.tests.unit.conductor.test_utils.ValidatePortPhysnetTestCase.test_validate_port_physnet_no_portgroup_update [0.044780s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerPowerRecoveryTestCase.test_node_recovery_success [0.030347s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_fail [0.047628s] ... ok {3} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios [0.053987s] ... ok {3} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_exception [0.051285s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_off_fail [2.041901s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ilo [0.067431s] ... ok {3} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_cache_bios_unsupported [0.052800s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_ipmi [0.068053s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_manual_management [0.063986s] ... ok {1} ironic.tests.unit.conductor.test_manager.ManagerTestProperties.test_driver_properties_snmp [0.063261s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_from_all_nodes_one_pass [0.085602s] ... ok {3} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify [0.304200s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config [0.090339s] ... ok {3} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_get_state_fails [0.092338s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_two_pass [0.093082s] ... ok {3} ironic.tests.unit.conductor.test_verify.DoNodeVerifyTestCase.test__do_node_verify_validation_fails [0.087764s] ... ok {3} ironic.tests.unit.conf.test_conductor.ValidateConductorAllowedPaths.test_abspath_validation_bad_path_raises [0.020605s] ... ok {3} ironic.tests.unit.conf.test_conductor.ValidateConductorAllowedPaths.test_abspath_validation_good_paths [0.018339s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_is_pruned_to_config_with_days [0.099990s] ... ok {3} ironic.tests.unit.conf.test_conductor.ValidateConductorAllowedPaths.test_abspath_validation_good_paths_trailing_slash [0.021888s] ... ok {3} ironic.tests.unit.db.sqlalchemy.test_api.TestDBWriteMethodsRetryOnDeadlock.test_retry_on_deadlock [0.019299s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_no_work [0.078015s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeHistoryRecordCleanupTestCase.test_history_pruning_not_other_conductor [0.079980s] ... ok {3} ironic.tests.unit.db.sqlalchemy.test_migrations.ModelsMigrationsSyncMysql.test_models_sync ... SKIPPED: Backend 'mysql+pymysql' is unavailable: Could not connect {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_create_schema_and_version ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_create_schema ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_and_version ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_upgrade_twice ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestMigrationsPostgreSQL.test_walk_versions ... SKIPPED: Backend 'postgresql+psycopg2' is unavailable: Could not connect {1} ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test__check_inspect_wait_timeouts [0.091391s] ... ok {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up [0.043234s] ... ok {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_migrate_up_with_data [0.028652s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_power_validate_fail [0.051486s] ... ok {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_default [0.038251s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_validate_fail [0.053160s] ... ok {3} ironic.tests.unit.db.sqlalchemy.test_migrations.TestWalkVersions.test_walk_versions_all_false [0.042632s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_create_chassis_already_exists [0.023608s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis [0.028902s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeInspectHardware.test_inspect_hardware_worker_pool_full [0.093516s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_that_does_not_exist [0.023845s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_destroy_chassis_with_nodes [0.025281s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_on_ok [1.071824s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_id [0.033371s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_by_uuid [0.023605s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_list [0.027822s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_fail [0.070147s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_get_chassis_that_does_not_exist [0.023788s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis [0.025349s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_that_does_not_exist [0.023492s] ... ok {3} ironic.tests.unit.db.test_chassis.DbChassisTestCase.test_update_chassis_uuid [0.021730s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_reservations_for_conductor [0.036700s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits [0.264485s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_clear_node_target_power_state [0.035709s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_invalid_parameter_value [0.043149s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_many_ht [0.029167s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_many_host_one_ht [0.027098s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_node_locked [0.041241s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_many_ht [0.025727s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_node_not_found [0.041388s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_no_ht [0.023823s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht [0.025116s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_one_host_one_ht_groups [0.024459s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_add_node_traits_replace [0.054561s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_active_hardware_type_dict_with_old_conductor [0.031574s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor [0.023320s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits [0.062520s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_conductor_not_found [0.023967s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_ignore_online [0.025073s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_all [0.044845s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_inactive_conductor_with_online_true [0.023332s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_empty [0.043604s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_offline_conductors [0.026359s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_offline_conductors_with_sqlite [0.026819s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_locked [0.043867s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_online_conductors [0.025135s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_get_online_conductors_with_sqlite [0.024272s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_not_found [0.043401s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_list_hardware_type_interfaces [0.030326s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_existing_fails [0.023750s] ... ok {1} ironic.tests.unit.conductor.test_manager.NodeTraitsTestCase.test_remove_node_traits_node_trait_not_found [0.052671s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces [0.028532s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target [0.042002s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_hardware_interfaces_duplicate [0.026705s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_register_conductor_override [0.024064s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_duplicate [0.044612s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor [0.025164s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_not_found [0.022627s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_locked [0.032799s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_conductor_offline [0.024529s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_not_found [0.039480s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_touch_offline_conductor [0.025988s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor [0.024158s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_node_power_on [0.039296s] ... ok {3} ironic.tests.unit.db.test_conductor.DbConductorTestCase.test_unregister_conductor_hardware_interfaces [0.023984s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create [0.022329s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_not_found [0.047945s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_name [0.023055s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_duplicate_uuid [0.023006s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_uuid [0.043271s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_invalid_step_no_interface [0.024319s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_create_no_steps [0.022568s] ... ok {1} ironic.tests.unit.conductor.test_manager.UpdateVolumeTargetTestCase.test_update_volume_target_volume_type [0.043809s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_destroy [0.026269s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach [0.045736s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_id [0.025462s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_name [0.024875s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_node_locked [0.033282s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_reboot_ok [1.050486s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_by_uuid [0.030731s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_network_error [0.042412s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list [0.029729s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_portgroup_physnet_inconsistent [0.041927s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names [0.027626s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_fail [0.066458s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_by_names_no_match [0.027394s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_raises_vif_invalid_for_attach [0.041813s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_get_deploy_template_list_sorted [0.028714s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_attach_validate_error [0.044607s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_duplicate_name [0.030193s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_extra [0.027714s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach [0.039603s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_name [0.026250s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_node_locked [0.031631s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_raises_network_error [0.039593s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_detach_validate_error [0.039664s] ... ok {1} ironic.tests.unit.conductor.test_manager.VifTestCase.test_vif_list [0.037824s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification [0.026202s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_notify_exc [0.024870s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test__emit_conductor_node_notification_known_payload_exc [0.023122s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification [0.023723s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_not_found [0.233239s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_console_notification_error_status [0.024527s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_add [0.027427s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_set_notification [0.024162s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_remove_all [0.026076s] ... ok {1} ironic.tests.unit.conductor.test_notification_utils.TestNotificationUtils.test_emit_power_state_corrected_notification [0.024120s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace [0.025904s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_drain_has_reserved [0.024378s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_steps_replace_args [0.027730s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_shutdown_timeout_reached [0.023795s] ... ok {3} ironic.tests.unit.db.test_deploy_templates.DbDeployTemplateTestCase.test_update_uuid_not_allowed [0.024523s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_start [0.032572s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_destroy_node_history_by_uuid [0.038007s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_start_failure [0.032804s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id [0.025459s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_start_no_rpc [0.031086s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_id_not_found [0.027404s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_after_full_reset_interval [0.026710s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id [0.028433s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_after_remaining_interval [0.028066s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_node_id_empty [0.023649s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_has_reserved [0.027107s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid [0.024129s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_history_by_uuid_not_found [0.023770s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_instant [0.024871s] ... ok {1} ironic.tests.unit.conductor.test_rpc_service.TestRPCService.test_stop_slow [0.024184s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list [0.027921s] ... ok {3} ironic.tests.unit.db.test_node_history.DBNodeHistoryTestCase.test_get_node_history_list_sorted [0.027614s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps [0.040036s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait [0.028174s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_only_enabled [0.033045s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_no_override [0.034953s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_disable [0.033565s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_fail [0.033730s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_priority_override_ok [0.034374s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_at_limit [0.163312s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__get_cleaning_steps_unsorted [0.040315s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate [0.032923s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps [0.039217s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_duplicate_at_limit [0.162599s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_node_not_exist [0.025443s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_disable_ramdisk [0.247992s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_get_steps_exception [0.038786s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_add_node_trait_over_limit [0.165967s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_invalid_arg [0.038499s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait [0.034765s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_missing_required_arg [0.042034s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_node_not_found [0.026189s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_no_steps [0.039039s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_delete_node_trait_not_found [0.027135s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_by_node_id [0.036156s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_not_supported [0.038153s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_empty [0.026738s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_requires_ramdisk [0.039112s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_get_node_traits_node_not_exist [0.025018s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test__validate_user_clean_steps_reserved_options [0.040988s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_exists [0.036073s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_node_not_exist [0.025277s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test_set_node_cleaning_steps_automated [0.045679s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_node_trait_not_exists [0.031192s] ... ok {1} ironic.tests.unit.conductor.test_steps.NodeCleaningStepsTestCase.test_set_node_cleaning_steps_manual [0.047109s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits [0.031254s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_at_limit [0.040712s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_already_present [0.044429s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_duplicate [0.030495s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off [0.056082s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_node_not_exist [0.033829s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_set_node_traits_over_limit [0.029938s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_change_secure_off_to_none [0.054164s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_empty_node_traits [0.030883s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_boot_mode [0.045315s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits [0.036916s] ... ok {3} ironic.tests.unit.db.test_node_traits.DbNodeTraitTestCase.test_unset_node_traits_node_not_exist [0.026108s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_failed_secure [0.044066s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_address [0.025570s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_noneness [0.035940s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_create_port_duplicated_uuid [0.024790s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_destroy_port [0.028357s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_retreive_and_set [0.047611s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address [0.028458s] ... ok {1} ironic.tests.unit.conductor.test_utils.CacheBootModeTestCase.test_unsupported [0.040057s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner [0.029880s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_exclude_current_conductor [0.025335s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_owner_no_match [0.026283s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok [2.046639s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project [0.028705s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_clean [0.038231s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_address_filter_by_project_no_match [0.025732s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_deploy [0.039481s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_id [0.026492s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_name [0.027558s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_notify_conductor_resume_operation [0.038496s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_by_uuid [0.026853s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_no_need [0.041004s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list [0.031252s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_false_power_on [0.041759s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_owner [0.036059s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_filter_by_node_project [0.034823s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_true [0.045153s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_port_list_sorted [0.033287s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_power_on_node_if_needed_with_smart_nic_port [0.042962s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id [0.027992s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_false [0.026299s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner [0.030296s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_remove_node_rescue_password_save_true [0.032844s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_owner_no_match [0.025683s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_false [0.039671s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project [0.029257s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_filter_by_node_project_no_match [0.026444s] ... ok {1} ironic.tests.unit.conductor.test_utils.MiscTestCase.test_restore_power_state_if_needed_true [0.037917s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_node_id_that_does_not_exist [0.025778s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_adopting [0.036788s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id [0.029507s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_always [0.036656s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner [0.029678s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_owner_no_match [0.027399s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_default [0.037326s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project [0.030466s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_force_never [0.036426s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_filter_by_node_project_no_match [0.028354s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_non_existent_device [0.036858s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_portgroup_id_that_does_not_exist [0.026669s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_shard_no_match [0.025979s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSetBootDeviceTestCase.test_node_set_boot_device_valid [0.036759s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_shard_with_match_multi [0.034358s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot [0.051662s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_power_soft_reboot_timeout [0.050636s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off [0.051358s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_storage_detach [0.052894s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_get_ports_by_shard_with_match_single [0.216191s] ... ok {1} ironic.tests.unit.conductor.test_utils.NodeSoftPowerActionTestCase.test_node_power_action_soft_power_off_timeout [0.052163s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port [0.028422s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_duplicated_address [0.029072s] ... ok {1} ironic.tests.unit.conductor.test_utils.ServiceUtilsTestCase.test_wipe_service_internal_info [0.045404s] ... ok {3} ironic.tests.unit.db.test_ports.DbPortTestCase.test_update_port_uuid [0.025860s] ... ok {1} ironic.tests.unit.db.test_api.MigrateToBuiltinInspectionTestCase.test_cannot_migrate [0.032021s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create [0.023771s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create_duplicate_name [0.025624s] ... ok {1} ironic.tests.unit.db.test_api.MigrateToBuiltinInspectionTestCase.test_cannot_migrate_some [0.048670s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create_duplicate_uuid [0.026263s] ... ok {1} ironic.tests.unit.db.test_api.MigrateToBuiltinInspectionTestCase.test_migrate_all [0.036526s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create_invalid_step_no_interface [0.025694s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_create_no_steps [0.024887s] ... ok {1} ironic.tests.unit.db.test_api.MigrateToBuiltinInspectionTestCase.test_migrate_with_limit [0.037915s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_destroy [0.028361s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_by_id [0.025448s] ... ok {1} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_empty_db [0.056487s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_by_name [0.026101s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_by_uuid [0.027395s] ... ok {1} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_max_count_zero [0.057741s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_list [0.028826s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_list_by_names [0.028876s] ... ok {1} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_1 [0.051716s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_list_by_names_no_match [0.027088s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_get_runbook_list_sorted [0.029239s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_duplicate_name [0.032986s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_extra [0.030583s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_name [0.027370s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_not_found [0.024503s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_steps_add [0.027296s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_steps_remove_all [0.027706s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_steps_replace [0.027414s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_steps_replace_args [0.028975s] ... ok {3} ironic.tests.unit.db.test_runbooks.DbRunbookTestCase.test_update_uuid_not_allowed [0.023609s] ... ok {1} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_2_some_nodes [0.328492s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy [0.048007s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test__ansible_deploy_iwdi [0.048105s] ... ok {1} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_old_version_max_count_same_nodes [0.101350s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_clean_up [0.040613s] ... ok {1} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_one_node [0.049036s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_deploy [0.045947s] ... ok {1} ironic.tests.unit.db.test_api.UpdateToLatestVersionsTestCase.test_version_exists [0.032393s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step [0.050554s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_allocations_get_destroyed_after_destroying_a_node_by_uuid [0.043165s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list [0.028623s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_execute_clean_step_no_success_log [0.048817s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_impossible [0.023994s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps [0.039436s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_check_node_list_non_existing [0.025358s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node [0.023476s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_clean_steps_priority [0.047478s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_already_exists [0.024895s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_instance_already_associated [0.024528s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_get_properties [0.035481s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_name_duplicate [0.025449s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_tags [0.021494s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare [0.064060s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_create_node_with_traits [0.021904s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node [0.030631s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning [0.063810s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_by_uuid [0.032044s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_destroy_node_that_does_not_exist [0.031834s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_callback_no_steps [0.051022s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_firmware_component_list_after_destroying_a_node_by_uuid [0.033202s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_cleaning_with_smartnic_port [0.051486s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_id [0.039625s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance [0.039617s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_prepare_with_smartnic_port [0.052174s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_invalid_uuid [0.022927s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_instance_wrong_uuid [0.027383s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down [0.043364s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_name [0.039759s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_force_reboot [0.049507s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses [0.034591s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_agent_soft_poweroff_retry [0.045056s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_multiple_found [0.032848s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning [0.040362s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_port_addresses_not_found [0.027546s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_by_uuid [0.037254s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_tear_down_cleaning_with_smartnic_port [0.040675s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list [0.035927s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_validate [0.039803s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_chassis_not_found [0.023358s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleDeploy.test_write_image [0.048210s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_description [0.031996s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_filter_by_project [0.038606s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__calculate_memory_req [0.039379s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_clean_steps [0.033704s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_includes_traits [0.046075s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_configdrive_path [0.026359s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_no_traits [0.036867s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_node_ip [0.052320s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_requested_fields_with_traits [0.053288s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__get_python_interpreter [0.025918s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info [0.025466s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_defaults [0.026483s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_ansible_driver_info_no_playbook [0.026460s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_list_with_filters [0.096163s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_all_gpt [0.031067s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_node_that_does_not_exist [0.026287s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_partitioning_info_root_msdos [0.027932s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_defaults [0.032192s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_description [0.033952s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints [0.049292s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_inspection [0.034729s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_fail_advanced [0.047496s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_provision [0.034588s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_iinfo [0.047931s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_cols [0.032915s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__parse_root_device_hints_override [0.044433s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout [3.076119s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_get_nodeinfo_list_with_filters [0.042377s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_extra_vars [0.026448s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_history_get_destroyed_after_destroying_a_node_by_uuid [0.033624s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_inventory_get_destroyed_after_destroying_a_node_by_uuid [0.034286s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_off [0.075136s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_inventory_updated_for_node [0.027800s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_node_provision_state_count [0.036647s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node [0.033923s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_ports_get_destroyed_after_destroying_a_node_by_uuid [0.031266s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_existent_node [0.032308s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_non_locked_node [0.027216s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_release_reservation [0.031025s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables [0.276335s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_after_release [0.034658s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_file [0.050816s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_in_exception_message [0.030150s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_non_existent_node [0.032002s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_json [0.049010s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reservation_of_reserved_node_fails [0.030535s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_configdrive_url [0.044120s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node [0.040124s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_insecure_activated [0.043941s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node_reads_reservation_once_sqlite [0.029241s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_reserve_node_reads_reservation_twice [0.034008s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__prepare_variables_root_device_hints [0.041731s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook [0.024771s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node [0.043610s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_override [0.024024s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_ansible_interpreter_python3 [0.024771s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_debug [0.025877s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_default_verbosity_nodebug [0.028732s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__run_playbook_fail [0.038897s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps [0.025689s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_missing [0.024844s] ... ok {3} ironic.tests.unit.drivers.modules.ansible.test_deploy.TestAnsibleMethods.test__validate_clean_steps_names_not_unique [0.033124s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_bootloader_none [0.032086s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_tags_get_destroyed_after_destroying_a_node_by_uuid [0.256300s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_bootloader_none_by_arch [0.024623s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning [0.029060s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy [0.035526s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_touch_node_provisioning_not_found [0.024550s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_config [0.024649s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node [0.041938s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_config_by_arch [0.025820s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_deprecated [0.026237s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_traits_get_destroyed_after_destroying_a_node_by_uuid [0.049646s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso [0.025118s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node [0.031837s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_deploy_iso_deprecated [0.025050s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_exc [0.025269s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_associate_and_disassociate [0.036512s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue [0.024603s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at [0.031326s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_config [0.023524s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at_inspecting [0.032055s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloBootCommonMethodsTestCase.test_parse_driver_info_rescue_iso [0.023974s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_finished_at_inspectwait [0.033283s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance [0.042110s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at [0.032436s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at_inspecting [0.031551s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume [0.054202s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_inspection_started_at_inspectwait [0.042467s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_clean_up_instance_boot_from_volume_bios [0.045686s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_instance_already_associated [0.034637s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance [0.043617s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_name_duplicate [0.030323s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_anaconda_cleaning [0.042718s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_no_provision [0.032992s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_not_found [0.024853s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_anaconda_deploying [0.042762s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_provision [0.031405s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_anaconda_rescuing [0.040499s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_bios [0.040461s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_instance_boot_from_volume [0.046673s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_cleaning [0.044260s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_deploying [0.044093s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_boot.IloiPXEBootTestCase.test_prepare_ramdisk_in_rescuing [0.044509s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_ca_file_and_snmp_inspection_true [0.026193s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_cafile [0.024217s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_multiple_params [0.023665s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_port [0.024118s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_timeout [0.023516s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_invalid_value_verify_ca [0.023529s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_address [0.023325s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_multiple_params [0.023324s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_password [0.024220s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_missing_username [0.022998s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_dir [0.025292s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_path_verify_ca_file [0.025526s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_false [0.025588s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_inspection_true_raises [0.023752s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_integer_auth_protocol [0.023869s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_auth_protocol [0.024113s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_invalid_priv_protocol [0.024389s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_snmp_true_no_auth_priv_protocols [0.024671s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_false [0.023104s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_boolean_true [0.023952s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_default_value [0.023436s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_common.IloValidateParametersTestCase.test_parse_driver_info_verify_ca_string_false [0.023631s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate [0.040336s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_console.IloConsoleInterfaceTestCase.test_validate_exc [0.041627s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_copies_file_to_target [0.240755s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_file_based_fw_to_gets_invoked_for_file_based_firmware [0.019892s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_downloads_the_fw_file [0.027450s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_http_based_fw_to_gets_invoked_for_http_based_firmware [0.020776s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_retries [1.197654s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_calls__download_http_based_fw_to [0.029844s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_creates_temp_url [0.044311s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__download_swift_based_fw_to_gets_invoked_for_swift_based_firmware [0.022463s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_calls_process_firmware_image [0.032257s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_doesnt_upload_firmware [0.029797s] ... ok {3} 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.039756s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_swift [0.042859s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_sets_loc_obj_remove_to_webserver [0.031925s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_swift [0.029793s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__extract_fw_from_file_uploads_firmware_to_webserver [0.028587s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_file_based_me [0.028685s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_swift_based_me [0.028997s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__remove_webserver_based_me [0.028452s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components [0.018615s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test__validate_sum_components_fails [0.024466s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_img_loc_sets_these_attributes [0.019672s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_sets_parsed_url_attrib_of_fw_processor [0.019645s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_fw_processor_ctor_throws_exception_with_invalid_firmware_url [0.018008s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info [0.017316s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_empty_parameter [0.017786s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_invalid_component [0.017583s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_fails_for_missing_parameter [0.018013s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum [0.017432s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_invalid_component [0.017738s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_get_and_validate_firmware_image_info_sum_with_component [0.017503s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__download_fw_to [0.075875s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_calls__extract_fw_from_file [0.077382s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_throws_error_if_checksum_validation_fails [0.063859s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_process_fw_on_verifies_checksum_of_downloaded_fw_file [0.307565s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_invalid_update_mode [0.020101s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_firmware_processor.FirmwareProcessorTestCase.test_verify_firmware_update_args_throws_for_no_firmware_url [0.021820s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates [0.058991s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_retries_without_log_mock [1.273609s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_clear_flag [0.055251s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_uuid [0.052133s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_error [0.047959s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_tags [0.043142s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_clear_ca_certificates_ilo_operation_not_supported [0.049444s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_with_traits [0.033662s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node [0.036247s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_completed [0.057922s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_connector_get_destroyed_after_destroying_a_node_uuid [0.042695s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd [0.055899s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node [0.034311s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on [4.051790s] ... ok {1} ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_volume_target_gets_destroyed_after_destroying_a_node_uuid [0.034841s] ... ok {1} ironic.tests.unit.db.test_shard.ShardTestCase.test_get_shard_empty_list [0.024148s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_ilo_error [0.066644s] ... ok {1} ironic.tests.unit.db.test_shard.ShardTestCase.test_get_shard_list [0.029816s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_erase_pattern_zero [0.052863s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_type_connector_id [0.026092s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_create_volume_connector_duplicated_uuid [0.025668s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_device_type_erase_pattern [0.044014s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_destroy_volume_connector [0.030817s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_erase_pattern [0.044294s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_id [0.031304s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_by_uuid [0.031208s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_hdd_with_invalid_format_erase_pattern [0.048076s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list [0.032773s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connector_list_sorted [0.033832s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd [0.054486s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id [0.026900s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_get_volume_connectors_by_node_id_that_does_not_exist [0.026719s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_ssd_when_hdd_done [0.058317s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector [0.030622s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_erase_devices_when_no_drive_available [0.043898s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_duplicated_type_connector_id [0.029323s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_fails_invalid_id [0.027172s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase [0.050216s] ... ok {1} ironic.tests.unit.db.test_volume_connectors.DbVolumeConnectorTestCase.test_update_volume_connector_uuid [0.025862s] ... ok {3} ironic.tests.unit.drivers.modules.ilo.test_management.Ilo5ManagementTestCase.test_one_button_secure_erase_ilo_error [0.043773s] ... ok {1} ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_clean_dhcp_opts [0.068055s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_architecture.ArchitectureTestCase.test_architecture [0.047419s] ... ok {1} ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_get_ip_addresses [0.050593s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_boot_mode.BootModeTestCase.test_boot_mode [0.049319s] ... ok {1} ironic.tests.unit.dhcp.test_dnsmasq.TestDnsmasqDHCPApi.test_update_dhcp [0.053475s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_physical_network.PhysicalNetworkTestCase.test_physical_network [0.057987s] ... ok {1} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_default_dhcp [0.021513s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_ramdisk_error.RamdiskErrorTestCase.test_ramdisk_error [0.038323s] ... ok {1} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_dhcp_some_error [0.033275s] ... ok {1} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_only_one_dhcp [0.020420s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_active_interfaces [0.025667s] ... ok {1} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_bad_dhcp [0.019920s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_all_interfaces [0.024552s] ... ok {1} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_neutron_dhcp [0.018631s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_no_pxe_fallback_to_all [0.024591s] ... ok {1} ironic.tests.unit.dhcp.test_factory.TestDHCPFactory.test_set_none_dhcp [0.021208s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_nothing_to_add [0.024970s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address [0.031796s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.ValidateInterfacesTestCase.test_pxe_only [0.024108s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_invalid_ip [0.030860s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.RunInspectionHooksTestCase.test [0.028415s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_ipv6 [0.031077s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_agent.RunInspectionHooksTestCase.test_always_collect_logs [0.027466s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_fixed_ip_address_with_exception [0.030991s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_portgroup_int_info [0.053093s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_ip_addresses_ports_int_info [0.047119s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_cleaning [0.050326s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup [0.048203s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_for_portgroup_with_exception [0.048409s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_provisioning [0.050218s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_client.GetClientTestCase.test_get_client [0.337776s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_tenant [0.050047s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test__get_port_ip_address_with_exception [0.050421s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses [0.056573s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_get_ip_addresses_for_port_and_portgroup [0.059724s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp [0.053357s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_fails [0.051296s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_no_vif_data [0.045871s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_set_sleep_and_fake [0.052134s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_some_failures [0.048092s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_client.GetClientTestCase.test_get_client_connection_problem [0.573985s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_dhcp_unset_sleep_and_fake [0.268761s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts [0.045424s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v4_and_v6 [0.044095s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok [2.056239s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_v6 [0.045768s] ... ok {1} ironic.tests.unit.dhcp.test_neutron.TestNeutron.test_update_port_dhcp_opts_with_exception [0.046198s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_client.GetClientTestCase.test_get_client_standalone [0.343584s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_callback_endpoint [0.027310s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_cd [0.053948s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_callback_endpoint_mdns [0.023898s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_callback_endpoint_no_loopback [0.023483s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_callback_endpoint_override [0.024540s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_disk [0.061675s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_get_properties [0.024085s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.CommonFunctionsTestCase.test_validate_ok [0.024416s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_floppy [0.044824s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test__set_boot_device_persistent [0.042067s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_custom_params [0.052284s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_boot.DracBootTestCase.test_validate_correct_vendor [0.035059s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_error [0.056301s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_with_ethernet_interfaces [0.037006s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_mac_address_without_ethernet_interfaces [0.037087s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_fast_track [0.053197s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_BIOS_boot_mode [0.039620s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_fast_track_via_driver_info [0.055427s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_with_UEFI_boot_mode [0.039688s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test__get_pxe_port_macs_without_boot_mode [0.037391s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_managed_ok [0.056440s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_get_properties [0.025770s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_require_managed_boot [0.028199s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_inspect.DracRedfishInspectionTestCase.test_inspect_hardware_with_ethernet_interfaces_mac [0.037314s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_unmanaged_error [0.038023s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__change_physical_disk_state_attribute_error [0.026915s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_unmanaged_ok [0.034030s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_validate_ok [0.026120s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status [0.055968s] ... ok {3} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareTestCase.test_validate_require_managed_boot [0.027317s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test__init_fail_invalid_fpga_ids_input [0.023820s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_convert_controller [0.054452s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test__init_fail_invalid_gpu_ids_input [0.024261s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_get_properties [0.033287s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_failed [0.059293s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__check_raid_tasks_status_task_still_processing [0.050661s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__clear_foreign_config_attribute_error [0.028338s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode [0.054196s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_no_conversion [0.048312s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_not_raid [0.044681s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_idrac [0.043835s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy [0.047968s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok_initial_power_off [1.078487s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware [0.351472s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__convert_controller_to_raid_mode_old_sushy_oem [0.043767s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_existing_cap_in_props [0.042138s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__get_storage_controller_invalid_identity [0.027025s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__is_realtime_ready [0.035967s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_inspect_exception [0.087575s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status [0.034651s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__query_raid_tasks_status_no_task_monitor_url [0.034380s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready [0.028444s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_mac_already_exist [0.087621s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_exceeded [0.027886s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__retry_till_realtime_ready_retry_fails [0.026889s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_empty_gpu_ids_fpga_id_sand_existing_cap [0.039451s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_empty_gpu_ids_fpga_ids [0.039753s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_clean [0.051254s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_gpu_and_cpu_fpgas_results_are_different [0.042762s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_failed_deploy [0.049039s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_gpu_cpu_fpgas_zero_and_existing_cap [0.039610s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_clean [0.049338s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_pci_gpu_devices_return_zero [0.040294s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__set_success_deploy [0.050757s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_props_trusted_boot_removed [0.042573s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready [0.026070s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test__wait_till_realtime_ready_retryerror [0.031818s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_create_configuration [0.026794s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_delete_configuration [0.025468s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_inspect_hardware_with_power_off [0.107526s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_validate [0.036218s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_async [0.046889s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_foreign_sync [0.027794s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectTestCase.test_validate_fail [0.034097s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_post_delete_configuration_no_subtasks [0.025679s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_avoid_repeatedly_resume_cleaning [0.048023s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_pre_create_configuration [0.030317s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_raid.DracRedfishRAIDTestCase.test_validate_correct_vendor [0.026995s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_completing_status [0.037832s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_other_clean_state [0.034369s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method [0.044346s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_clean_fail [0.040890s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_managers_fail [0.046428s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_complete_cleaning [0.040812s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_with_fgi_status_none [0.047864s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_with_two_nodes_without_raid_config [0.042786s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_fgi_status [0.028974s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_input [0.032875s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_node [0.027762s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_periodic_task.iRMCPeriodicTaskTestCase.test__query_raid_config_fgi_status_without_raid_config [0.027571s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__is_expected_power_state [0.023813s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_no_managers [0.270391s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_invalid_target_state [0.033603s] ... ok {1} ironic.tests.unit.drivers.modules.drac.test_utils.DracUtilsOemManagerTestCase.test_execute_oem_manager_method_oem_not_found [0.043764s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_off_ok [0.032910s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_power_on_ok [0.037775s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_cleaning [0.067027s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_reboot_ok [0.036021s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_error_deploying [0.053738s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_scci_exception [0.034318s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_snmp_exception [0.036109s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_cleaning [0.052469s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok [0.034458s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_get_settings_failed_deploying [0.054856s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok [0.036471s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_apply_configuration [0.048525s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_power_off [0.049335s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_factory_reset [0.050475s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_soft_reboot [0.050126s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerInternalMethodsTestCase.test__wait_power_state_timeout [0.048015s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_cleaning [0.055187s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_iloobj_failed_deploy [0.050681s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state_default [0.061492s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_cleaning [0.048802s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state_ipmi [0.062494s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_post_boot_bios_step_invalid_deploy [0.051303s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_power_state_redfish [0.052501s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_cleaning [0.052266s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_get_properties [0.032839s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on [0.040858s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_conf_deploying [0.053174s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_apply_configuration [0.045723s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_cleaning [0.056559s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_factory_reset_deploying [0.052247s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_cleaning [0.039301s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_iloobj_failed_deploying [0.041630s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_power_on_timeout [0.253528s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_cleaning [0.039744s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot [0.038648s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_invalid_deploying [0.038726s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_reboot_reboot_timeout [0.039041s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state [0.038136s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_cleaning [0.051225s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_set_power_state_timeout [0.040790s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_reset_bios_failed_deploying [0.050176s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_default [0.034132s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_cleaning [0.053522s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_fail_ipmi [0.035147s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_fail_redfish [0.043596s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test__execute_pre_boot_bios_step_set_bios_failed_deploying [0.054628s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_ipmi [0.039080s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_post_boot [0.043821s] ... ok {3} ironic.tests.unit.drivers.modules.irmc.test_power.IRMCPowerTestCase.test_validate_redfish [0.039752s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_apply_configuration_pre_boot [0.043442s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network [0.051777s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings [0.037587s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_invalid_parameter [0.033656s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_missing_parameter [0.034815s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network_from_node [0.073438s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_ilo_error [0.036735s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_cleaning_network_with_sg [0.051277s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_cache_bios_settings_with_unknown_error [0.035625s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network [0.052168s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_get_properties [0.033466s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_bios.IloBiosTestCase.test_validate [0.038734s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network_from_node [0.080560s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test__configure_vmedia_boot_with_boot_iso [0.048038s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_inspection_network_with_sg [0.051099s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume [0.058671s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network [0.055598s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_boot_from_volume_bios [0.044206s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_deleting [0.048450s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network_from_node [0.083193s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_instance_rescuing [0.048688s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_provisioning_network_with_sg [0.048452s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_clean_up_ramdisk [0.041744s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network [0.054289s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume [0.056373s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_from_volume_bios [0.043457s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network_from_node [0.063188s] ... ok {2} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout [3.068811s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_boot_ramdisk [0.049461s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_add_rescuing_network_with_sg [0.052419s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_cpu_capabilities.CPUCapabilitiesTestCase.test_cpu_capabilities [0.059098s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_partition_image [0.047281s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks [0.057507s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_pci_devices.PciDevicesTestCase.test_pci_devices [0.050574s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image [0.049754s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_multiple_ports_one_vif_id [0.053257s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_multiple_new_root_devices [0.045966s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image [0.064947s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_no_ports_for_node [0.041963s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_no_new_root_devices [0.046450s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_no_vif_id [0.053872s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning [0.066681s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_no_previous_inventory [0.050249s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_update_fail [0.047235s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_no_serials [0.044293s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_client_id [0.060238s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_root_device_already_set [0.043537s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_portgroups [0.062113s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_raid_device.RaidDeviceTestCase.test_root_device_found [0.060044s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_all_match [0.057023s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_configure_tenant_networks_with_portgroups_no_address [0.068638s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_get_node_network_data [0.045550s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_first_match_on_skip_list_use_second [0.060027s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_need_power_on_false [0.046751s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_in_takeover [0.332774s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_incorrect_hint [0.047751s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_need_power_on_true [0.048455s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_local_gb_without_spacing [0.066409s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image [0.072147s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_cleaning_network [0.110757s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_no_hints [0.113350s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_a_glance_image_cleaning [0.133237s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_cleaning_network_from_node [0.135260s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_one_matches [0.111213s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_not_iso [0.101520s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_glance_image [0.067087s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_provisioning_network [0.113561s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_root_device_skip_list [0.107918s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_prepare_ramdisk_rescue_not_a_glance_image [0.061303s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_size_invalid [0.078038s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_provisioning_network_from_node [0.129006s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate [0.090474s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_boot_from_volume [0.090317s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_size_string [0.130400s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_remove_rescuing_network [0.130523s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection [0.074400s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_inspection_missing [0.058615s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_root_device.RootDeviceTestCase.test_zero_size [0.115611s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks [0.101459s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_glance [0.053153s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_portgroup_1 [0.058434s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.hooks.test_validate_interfaces.GetInterfacesTestCase.test_get_interfaces [0.065318s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver [0.054245s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_portgroup_2 [0.064042s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_ramdisk_deploy_webserver_exc [0.056767s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_unconfigure_tenant_networks_smartnic [0.059229s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_agent.AbortInspectionTestCase.test_cleanup_failed [0.122151s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue [0.046936s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate [0.047222s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_deprecated [0.051005s] ... ok {2} ironic.tests.unit.drivers.modules.inspector.test_agent.AbortInspectionTestCase.test_success [0.088887s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_inspection [0.051497s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_boot.IloVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk [0.047040s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration [0.052414s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_inspection_exc [0.054283s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list [0.029952s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty [0.027063s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_rescue [0.048822s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_empty_no_path [0.025610s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_none [0.027115s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_validate_rescue_exc [0.049182s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_certificate_file_list_string_type [0.030944s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__get_floppy_image_name [0.027867s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_attach [0.047128s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image [0.050290s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_detach [0.048236s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test__prepare_floppy_image_use_webserver [0.050207s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_apply_configuration_failed [0.289293s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_None [0.054496s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings [0.050304s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_false [0.040881s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_cache_bios_settings_failed [0.044324s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_invalid [0.046022s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_factory_reset [0.043618s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_raises_ilo_error [0.044479s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_bios.IRMCBIOSTestCase.test_validate [0.045009s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true [0.046459s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_list [0.296213s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_add_certificates_true_default [0.048696s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_instance [0.055464s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_neutron.NeutronInterfaceTestCase.test_vif_port_changed [0.057341s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia [0.030581s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_attach_vmedia_fails [0.025403s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_ramdisk [0.058730s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_cleaning_network [0.047170s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot [0.056658s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_inspection_network [0.045527s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_clean_up_ramdisk_rescue [0.067084s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc [0.048595s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_add_provisioning_network [0.043717s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_get_properties [0.044696s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_configure_tenant_networks [0.046265s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_exc_resource_not_found [0.054057s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance [0.069714s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_current_vif [0.046859s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_cleanup_vmedia_boot_for_webserver [0.045248s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_node_network_data [0.042525s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates [0.040939s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_active [0.059313s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_get_properties [0.030794s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_default [0.046002s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_port_changed [0.047133s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_kickstart [0.080192s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_clear_certificates_raises_ilo_error [0.047516s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_portgroup_changed [0.052305s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift [0.032969s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_kickstart_bios [0.075554s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_swift_throws_error_if_swift_operation_fails [0.032193s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_cleaning_network [0.048919s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server [0.028155s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_lenovo [0.057720s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_copy_image_to_web_server_fails [0.033372s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_inspection_network [0.051714s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_remove_provisioning_network [0.041282s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_destroy_floppy_image_from_web_server [0.051750s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_ramdisk_pxe_conf_exists [0.067768s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_unconfigure_tenant_networks [0.048071s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_file_url [0.042334s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_download_http_url [0.040670s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_instance_ramdisk_pxe_conf_missing [0.072979s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_validate [0.046843s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_attach [0.043289s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices [0.053041s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk [0.076227s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_detach [0.047487s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_eject_vmedia_devices_raises [0.046178s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode [0.025959s] ... ok {3} ironic.tests.unit.drivers.modules.network.test_noop.NoopInterfaceTestCase.test_vif_list [0.044369s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_current_boot_mode_fail [0.025109s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_bios [0.074975s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile [0.029621s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__check_node_firmware_update_done [0.055808s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_cafile_boolean [0.034726s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_ilo_object_snmp [0.025438s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_cleaning [0.088510s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__check_node_firmware_update_fail [0.063191s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode [0.047914s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_conflicting_boot_modes [0.073118s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__check_node_firmware_update_fail_servicing [0.066467s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_bios [0.051165s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_fail [0.041590s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__check_update_in_progress [0.057342s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported [0.068695s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__execute_firmware_update_no_targets [0.035962s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_rescue [0.074885s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__execute_firmware_update_targets [0.051844s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__stage_firmware_file_error [0.061005s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_rescue_bios [0.123306s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__stage_firmware_file_https [0.057886s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test__stage_firmware_file_swift [0.027239s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_check_conn_error [0.051371s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_secure_boot_mode_not_supported [0.324758s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_not_called [0.128626s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state [0.042277s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_check_update_still_waiting [0.107943s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_fail [0.044544s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_on_bm [0.086662s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_get_server_post_state_not_supported [0.044579s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift [0.033499s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_check_update_task_monitor_not_found [0.094377s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_notfound_exc [0.038165s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic [0.117650s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_check_update_wait_elapsed [0.051041s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_swift_suppresses_operror_exc [0.037006s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_continue_update_waitting [0.049722s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_image_from_web_server [0.030921s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_list [0.027421s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_continue_updates_last [0.052248s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_remove_single_or_list_of_files_with_file_str [0.026459s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode [0.027444s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_continue_updates_last_service [0.053851s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_with_IloOperationError [0.026578s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_boot_mode_without_set_pending_boot_mode [0.027253s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_continue_updates_more_updates [0.049605s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode [0.051236s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_fail [0.043632s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_create_all_components [0.087832s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_set_secure_boot_mode_not_supported [0.043643s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_empty_settings [0.054063s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios [0.358013s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_false [0.069717s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_empty_settings_service [0.052906s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_get_properties [0.033549s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi [0.084321s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_persistent_true [0.044413s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_invalid_component_in_settings [0.052243s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_ilo_error [0.046597s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_prepare_ramdisk_uefi [0.079036s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_raises_not_supported [0.044974s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_invalid_component_in_settings_service [0.054601s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_missing_deploy_kernel [0.045332s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_uefi_https_scheme_http [0.046672s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_all_components [0.040756s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_missing_deploy_ramdisk [0.045501s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia [0.047679s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_bios_component [0.064042s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_fail_no_port [0.043239s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_parameters [0.049942s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_good [0.048589s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_bmc_component [0.068444s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_swift [0.052456s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_good_whole_disk_image [0.054453s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_required_field_in_settings [0.055832s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_for_boot_with_url [0.048974s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_inspection [0.062037s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_setup_vmedia_without_params [0.046375s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_required_field_in_settings_service [0.058166s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_inspection_no_inspection_ramdisk [0.052855s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode [0.060022s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_kickstart_fail_http_url_not_set [0.058096s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_capabilities_exist [0.050103s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_instance_info_exists [0.044262s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_kickstart_missing_stage2_id [0.055214s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_no_image_source_for_local_boot [0.041607s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_legacy [0.049757s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_prop_boot_mode_exist [0.042547s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_non_local [0.045834s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_simple_update_action [0.283375s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootBasicTestCase.test_validate_skip_check_write_image_false [0.047875s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown [0.057542s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_missing_updateservice [0.048755s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__cleanup_boot_from_volume [0.047470s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_unknown_except [0.040282s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_redfish_fw_updates [0.035848s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_boot_mode_use_def_boot_mode [0.052101s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_redfish_fw_updates_empty [0.041242s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_apply_error [0.082251s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_ipmi_properties [0.042348s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_firmware.RedfishFirmwareTestCase.test_validate [0.045902s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_update_redfish_properties [0.042439s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_fc [0.074146s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system [0.058516s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values [0.037817s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_invalid_param [0.030023s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_validate_security_parameter_values_no_param [0.025885s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_multiple_systems [0.062052s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi [0.080113s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum [0.031681s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_access_error_retry [0.053040s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_sha256 [0.030624s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_chap [0.081353s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_sha512 [0.030407s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_attribute_error [0.055569s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_failed_validation [0.033116s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_common.IloCommonMethodsTestCase.test_verify_image_checksum_throws_for_nonexistent_file [0.025925s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_connection_error_retry [0.049289s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_iscsi_no_portal_port [0.082256s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_power_state [0.038507s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_get_system_resource_not_found [0.052638s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_properties [0.038875s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test__configure_boot_from_volume_multi_lan_ports [0.102751s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready [0.061327s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_get_supported_power_states [0.047059s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance [0.053082s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsSystemTestCase.test_wait_until_get_system_ready_with_connection_error [0.053558s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_no_timeout [0.055465s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_create_subscription [0.039016s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_clean_up_instance_error [0.060509s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_reboot_with_timeout [0.058729s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_delete_subscription [0.040560s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_no_timeout [0.045684s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_all [0.031048s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_instance [0.074560s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_eject_vmedia_cd [0.032587s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_set_power_state_timeout [0.043598s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions [0.031994s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate [0.034457s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_prepare_ramdisk_skip [0.062852s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_all_subscriptions_empty [0.036991s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerTestCase.test_validate_fail [0.036205s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_does_not_exist [0.034462s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_cleaning [0.055878s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_get_subscription_exists [0.034763s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_invalid_delete_subscription [0.046116s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_create_raid_deploying [0.054688s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_invalid_physical_id_in_lan_port [0.151189s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_create_subscription [0.051532s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_cleaning [0.064535s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_delete_subscription [0.030565s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi [0.074447s] ... ok {3} ironic.tests.unit.drivers.modules.redfish.test_vendor.RedfishVendorPassthruTestCase.test_validate_invalid_dev [0.036619s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test__prepare_for_read_raid_delete_raid_deploying [0.052275s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__fail_validation [0.041249s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_invalid_netmask [0.078718s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi [0.041554s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_ip [0.068034s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_iscsi_and_unknown [0.045481s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_multiple_fc_wwns [0.041123s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_iqn [0.069317s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_raises_with_insufficient_data [0.043686s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_single_path [0.037849s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_netmask [0.071250s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_cleaning [0.258050s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test__generate_connector_unknown_raises_excption [0.056706s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_deploying [0.062252s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_no_physical_id [0.078360s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_called_with_target_and_connector [0.060679s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_cleaning [0.050141s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_large_netmask [0.074233s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_fails_without_connectors [0.046101s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_empty_target_raid_config_deploying [0.050463s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning [0.057474s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_iscsi_connector_too_small_netmask [0.077430s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_ilo_error_cleaning_deploying [0.059261s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootWithVolumeTestCase.test_validate_no_physical_id_in_lan_port [0.067118s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info [0.027146s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_cleaning [0.050871s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_dir_path_verify_ca [0.027184s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_file_path_verify_ca [0.026241s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_non_root_deploying [0.050567s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_auth_method [0.030363s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_detach_volumes_no_volumes [0.258959s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_cleaning [0.049718s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_port [0.027994s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_sensor_method [0.025545s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure [0.049554s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_deploying [0.051054s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_password [0.026076s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_auth_proto [0.023833s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_attach_volumes_failure_no_attach_error [0.049140s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_cleaning [0.045177s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_community [0.028447s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure [0.047823s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_port [0.027292s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_skip_root_skip_non_root_deploying [0.046518s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_password [0.025771s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_detach_volumes_failure_raises_exception [0.049534s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_priv_proto [0.024929s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_cleaning [0.063165s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_security [0.026077s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_should_write_image [0.051687s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_deploying [0.060807s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fail_on_unknown_volume_types [0.052208s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_cleaning [0.060910s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_fc_conn_iscsi_target [0.055541s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_create_configuration_with_read_raid_failed_deploying [0.060104s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_iscsi_conn_fc_target [0.051474s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_when_fc_connectors_unequal [0.044527s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_cleaning [0.048051s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_user [0.231521s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version [0.023850s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_deploying [0.044854s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_fails_with_ipxe_not_enabled [0.055767s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_snmp_version_fips [0.026291s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_timeout [0.024549s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_cleaning [0.052967s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_fc_boot_no_connectors [0.049519s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_invalid_verify_ca [0.027985s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_address [0.026054s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_ilo_error_deploying [0.054308s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_failure_if_iscsi_boot_no_connectors [0.053811s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_multiple_params [0.025992s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_password [0.027659s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_cleaning [0.048351s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_auth_password [0.029638s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_connectors_and_boot [0.068442s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_priv_password [0.026228s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_no_logical_drive_deploying [0.046404s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_snmp_user [0.025213s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_connectors [0.047930s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_missing_username [0.025317s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_cleaning [0.056868s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_auth_password [0.028240s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_fc_targets [0.053747s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_short_snmp_priv_password [0.027204s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_deploying [0.062237s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_connector [0.048948s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_snmpv3 [0.027554s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_string_bool_verify_ca [0.027485s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_cleaning [0.060897s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_info_using_snmp_security [0.028397s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_iscsi_targets [0.061258s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_driver_option_default [0.035476s] ... ok {3} ironic.tests.unit.drivers.modules.storage.test_cinder.CinderInterfaceTestCase.test_validate_success_no_settings [0.060723s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_common.IRMCValidateParametersTestCase.test_parse_snmp_driver_info_with_snmp [0.030732s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_raid.Ilo5RAIDTestCase.test_delete_configuration_with_read_raid_failed_deploying [0.076267s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_empty_result [0.020994s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_get_properties [0.036219s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_has_retries [0.020468s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_invalid_state [0.047302s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_multi_command [0.020766s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_single_command [0.020221s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_detect_vendor_ipmi [0.053944s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_maintenance [0.044518s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_base.FreshlyBootedTestCase.test__freshly_booted_single_command_mismatch [0.020150s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_basics [0.022541s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_manage [0.041343s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_detect_vendor_redfish [0.047613s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_get_power_state [0.032323s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_boot_into_iso_missing_boot_iso_href [0.041041s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_get_power_state_unknown [0.026665s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_exception [0.045685s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_is_it_a_supported_system [0.053024s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot [0.068797s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test__validate_is_it_a_supported_system_exception [0.047102s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_ipmitool_ng_redfish [0.096243s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_another_state [0.044869s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_boot_into_iso [0.047407s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_into_instance [0.054160s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_boot_into_iso [0.044322s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_ipmitool_ok_ipmi [0.101745s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_reboot_timeout [0.052337s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_create_subscription [0.048422s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate [0.024088s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ng_ipmi [0.049594s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate_fails [0.023898s] ... ok {1} ironic.tests.unit.drivers.modules.ilo.test_vendor.VendorPassthruTestCase.test_validate_operation_exeption [0.045957s] ... ok {3} ironic.tests.unit.drivers.modules.test_agent_power.AgentPowerTest.test_validate_no_fast_track [0.023267s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ng_redfish [0.049124s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists [0.022866s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_accelerators.AcceleratorsTestCase.test_accelerators [0.049978s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__ensure_console_pid_dir_exists_fail [0.024378s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ok_ipmi [0.054704s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid [0.022174s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_extra_hardware_with_errors [0.047887s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir [0.020552s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_dir_tempdir [0.020003s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_sensors_data_scci_ok_redfish [0.050837s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_invalid_data_strict_mode_off [0.043335s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file [0.023196s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_file_not_found [0.020681s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_supported_boot_devices_ipmi [0.047437s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_invalid_data_strict_mode_on [0.041020s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__get_console_pid_not_a_num [0.022558s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console [0.026778s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_get_supported_boot_devices_redfish [0.047698s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_no_data_received [0.044509s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_exception [0.025034s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_fail [0.045232s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_extra_hardware.ExtraHardwareTestCase.test_valid_extra_hardware [0.040451s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_inject_nmi_ok [0.042481s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_interface_not_in_all_interfaces [0.044778s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_invalid_chassis_id_subtype [0.042583s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_restore_irmc_bios_config [0.047948s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_invalid_port_id_subtype [0.042915s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ng_ipmi [0.057715s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_invalid_tlv_value_hex_format [0.044498s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_lldp_none [0.044267s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_no_port_in_ironic [0.043954s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_bios_ipmi [0.140476s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_cdrom_ipmi [0.132262s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_port_id_subtype_mac [0.254706s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_disk_ipmi [0.134529s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_port_local_link_connection_already_exists [0.046975s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_local_link_connection.LocalLinkConnectionTestCase.test_valid_data [0.043815s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_pxe_ipmi [0.135813s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.UpdatePortsTestCase.test_keep_added [0.086072s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.UpdatePortsTestCase.test_keep_all [0.079103s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_forced_kill [0.829022s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interface_set_boot_device_ok_safe_ipmi [0.137601s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.UpdatePortsTestCase.test_keep_present [0.073962s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_nopid [0.048931s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interfase_set_boot_device_fail_redfish [0.046395s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__stop_console_shellinabox_not_running [0.031777s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.hooks.test_ports.UpdatePortsTestCase.test_keep_pxe_enabled [0.069905s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_management_interfase_set_boot_device_success_redfish [0.050284s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_default [0.075059s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_ipmi_fail [0.043412s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_agent.InspectHardwareTestCase.test_managed_ok [0.055598s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_hostname [0.045664s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_ipmi_success [0.042924s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_agent.InspectHardwareTestCase.test_managed_unversion_url [0.053371s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_redfish_fail [0.042113s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_agent.InspectHardwareTestCase.test_unmanaged_disallowed [0.027054s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv4 [0.053654s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_validate_redfish_success [0.043224s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test__verify_port_ipv6 [0.045188s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_agent.InspectHardwareTestCase.test_unmanaged_ok [0.051621s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_no_free_ports [0.026958s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_exception_ignored [0.026913s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_fail_invalid [0.046160s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_not_check_inspecting [0.025832s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_range_retry [0.026827s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_fail_missing [0.045574s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_not_finished [0.028237s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_not_inspecting [0.025924s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_not_inspector [0.025937s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_raise_http_success [0.083667s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_clean_up_failed [0.037652s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_error [0.027666s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_raise_https_success [0.059883s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_error_dont_store_inventory [0.028699s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_ok [0.036296s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementTestCase.test_verify_http_s_connection_and_fw_ver_success [0.051149s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_ok_store_inventory [0.029004s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_none_raid_adapter_profile [0.035682s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.CheckStatusTestCase.test_status_ok_store_inventory_nostore [0.027387s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_allocate_port_success [0.273089s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareAbortTestCase.test_abort_error [0.025606s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_raid_level_is_none [0.035085s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_https_url [0.023540s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_shellinabox_console_url [0.022880s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_with_raid_level_outside_list [0.035186s] ... ok {1} ironic.tests.unit.drivers.modules.inspector.test_interface.InspectHardwareAbortTestCase.test_abort_ok [0.036404s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp [0.024820s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test___fail_validation_without_raid_level [0.037674s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp6 [0.023804s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_fail [0.045925s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_get_socat_console_url_tcp_with_address_conf [0.023171s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__commit_raid_config_with_logical_drives [0.036801s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_invalid_console_port_range [0.023664s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_cd_ok [0.043731s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_0 [0.024614s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file [0.026131s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_1 [0.025497s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_make_persistent_password_file_fail [0.024760s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_fail [0.052312s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_10 [0.029083s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console [0.035658s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__attach_virtual_fd_ok [0.052704s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail [0.035077s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__cleanup_vmedia_boot_ok [0.056292s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_no_pid [0.038130s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_fail_nopiddir [0.032107s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_fail [0.043037s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_nopid [0.036622s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_cd_ok [0.044912s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_shellinabox_console_timeout [0.032423s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_fail [0.047827s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console [0.034079s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_5 [0.242786s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_50 [0.024531s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_default_ipv4 [0.032118s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__detach_virtual_fd_ok [0.039026s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_raid_6 [0.025297s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_floppy_image_name [0.023401s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_bind_addr_ipv4 [0.032443s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validate_capacity_with_physical_disk [0.025618s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__get_iso_name [0.030322s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_default_timeout [0.033331s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_difference_physical_disks_type [0.041055s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option [0.032574s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout [0.032787s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_config_option_non_existed_root [0.024150s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_duplicated_physical_disks [0.038004s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_check_arg_timeout_disabled [0.032600s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_deprecated [0.024402s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_in_share [0.023849s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_not_enough_valid_disks [0.035682s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail [0.030736s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params [0.028278s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_fail_nopiddir [0.029127s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_incorrect_valid_disks [0.036939s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_conf [0.024338s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_start_socat_console_nopid [0.032669s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_insufficient [0.036620s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_kernel_params_in_driver_info [0.024386s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console [0.024731s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_not_in_share [0.024387s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_not_enough_disks [0.035218s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_shellinabox_console_fail_nopid [0.023735s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console [0.023510s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_invalid [0.043914s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_outside_valid_disks_1 [0.036823s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_stop_socat_console_fail_nopid [0.023952s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_driver_info_with_iso_missing [0.024386s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_with_physical_disk_outside_valid_slots_2 [0.037441s] ... ok {3} ironic.tests.unit.drivers.modules.test_console_utils.ConsoleUtilsTestCase.test_valid_console_port_range [0.022964s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_deprecated [0.023350s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_name_ok [0.025639s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_cleaning [0.033062s] ... ok {2} ironic.tests.unit.drivers.modules.irmc.test_raid.IRMCRaidConfigurationInternalMethodsTestCase.test__fail_validation_without_physical_disks [0.037840s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_file_url_ok [0.028563s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_get_async_step_return_state_deploying [0.032471s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_port [0.036700s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_glance_ok [0.024344s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_all [0.036751s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_http_ok [0.024134s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_extra_portgroup [0.043239s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_https_ok [0.023525s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_cleaning_set_one [0.035901s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_port [0.037618s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_invalid [0.039571s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_clears_non_pregenerated_token [0.034510s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__clear_vif_from_port_like_obj_in_internal_info_portgroup [0.041191s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_with_boot_iso_uuid_ok [0.024926s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_clears_polling_if_not_set [0.034568s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__parse_instance_info_without_boot_iso_ok [0.024106s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_in_internal_info [0.051110s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_all [0.037850s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_create_ok [0.050578s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.AsyncStepTestCase.test_set_async_step_flags_deploying_set_one [0.035206s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_port_like_obj_by_vif_id_not_attached [0.051000s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images [0.028000s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_fetch_ok [0.054110s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_in_internal_info [0.033596s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images_checksum [0.030412s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__get_vif_id_by_port_like_obj_not_attached [0.033070s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_fetch_images_fail [0.026164s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_boot_iso_file [0.053038s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_anaconda_deploy [0.030078s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_port [0.036996s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image [0.046178s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_boot_option_default_value [0.026477s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test__save_vif_to_port_like_obj_portgroup [0.040754s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_fail [0.027839s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__prepare_floppy_image_exception [0.045878s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_from_keystone [0.026855s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_cleaning [0.043206s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__remove_share_file [0.026867s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_get_ironic_api_url_none [0.026275s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_provisioning [0.044408s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy [0.024701s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_with_parameters [0.044392s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_anaconda_deploy_false [0.027426s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_rescuing [0.048626s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid [0.025060s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_is_software_raid_false [0.023961s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_internal_info_tenant_vif [0.043642s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_get_current_vif_none [0.044034s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_extra_and_internal_priority [0.048677s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state [0.114042s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_internal [0.056371s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs [0.080296s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_for_boot_without_parameters [0.277842s] ... ok {2} ironic.tests.unit.drivers.modules.network.test_common.TestVifPortIDMixin.test_vif_list_port_and_portgroup [0.060428s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup [0.027219s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_deploy [0.045151s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_never [0.058682s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup_notstaged [0.020062s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_cleanup_swift_fails [0.027056s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test__setup_vmedia_with_file_rescue [0.042054s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_collect_deploy_logs_overide [0.052876s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_file [0.027567s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed [0.040595s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_http [0.030542s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_invalid [0.018300s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_deprecated [0.037218s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_download_to_temp_swift [0.033595s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_attach_boot_iso_if_needed_on_rebuild [0.035704s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.OtherFunctionTestCase.test_set_failed_state_no_poweroff [0.113176s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_get_swift_temp_url [0.025828s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http [0.022043s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_exception [0.043827s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http_copyfile [0.022530s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_check_share_fs_mounted_ok [0.027321s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_http_copyfile_fails [0.022483s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_local_external [0.022578s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_parse_deploy_info_ok [0.043565s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_stage_swift [0.024202s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args [0.019678s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_deploy [0.043447s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_checksum_missing [0.019568s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_checksum_not_string [0.018834s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCDeployPrivateMethodsTestCase.test_setup_vmedia_with_image_service_rescue [0.044981s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_not_list [0.028680s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_source_not_known [0.024619s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_clean_up_instance [0.047948s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_anaconda_deploy_image_source [0.257654s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_unknown_key [0.024797s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_url_missing [0.021118s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_boot_iso_conflict [0.025624s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_instance [0.045630s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_url_not_string [0.019876s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_missing_stage2_id [0.028106s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_validate_update_firmware_args_wait_not_int [0.020303s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_with_backup_bios [0.044747s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_authorized [0.026346s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum [0.020391s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum_mismatch [0.018651s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_glance_image_not_found [0.025868s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCPXEBootTestCase.test_prepare_ramdisk_without_backup_bios [0.045945s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum_sha256 [0.018377s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_invalid_image_href [0.023855s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_firmware_utils.FirmwareUtilsTestCase.test_verify_checksum_sha512 [0.018184s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test__configure_vmedia_boot [0.039884s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_local_boot [0.025767s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_nonglance_image [0.025561s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateImagePropertiesTestCase.test_validate_image_properties_ramdisk_deploy [0.027989s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance [0.056331s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot ... SKIPPED: bug #2025424 {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_boot_iso_only [0.033834s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_with_secure_boot_false [0.052164s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good [0.028093s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image [0.029242s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_instance_without_secure_boot [0.053185s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_good_non_glance_image_anaconda [0.024821s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_missing_image_source [0.023226s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_clean_up_ramdisk [0.042514s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_kernel [0.023384s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_non_glance_image_missing_ramdisk [0.026175s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_partition_image [0.047533s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_ramdisk_deploy [0.024288s] ... ok {3} ironic.tests.unit.drivers.modules.test_deploy_utils.ValidateParametersTestCase.test__get_img_instance_info_whole_disk_image [0.024021s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_whole_disk_image [0.045140s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot ... SKIPPED: bug #2025424 {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch [0.024334s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_create_port_when_its_state_is_none [0.364021s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_with_secure_boot_false [0.047885s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_already_raw [0.029812s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_deep_inspection_disabled [0.023700s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_properties [0.042111s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_instance_without_secure_boot [0.049340s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_estimate_fallback [0.022306s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_get_pxe_port_macs [0.032696s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_format_does_not_match_glance [0.022740s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_not_safe_image [0.021459s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_cleaning [0.060760s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_cpu_arch [0.040113s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_part_already_exists [0.023155s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_ramdisk_image [0.024432s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_fail_missing_memory_mb [0.037853s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_deploying [0.057765s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_cache.TestFetchCleanup.test__fetch_ramdisk_kernel [0.026007s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.IloImageHandlerTestCase.test_ilo_kernel_param_config [0.022953s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_boot_mode [0.052694s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param [0.023111s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_glance_image_rescuing [0.059854s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__find_param_not_found [0.021892s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu_count [0.048155s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bios [0.032859s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu_frequency [0.047858s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso [0.033106s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_bootable_iso_with_instance_info [0.032977s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_prepare_ramdisk_not_deploying_not_cleaning [0.112817s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu_instruction_set [0.051893s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_remote_image_share_type_values [0.026151s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_default_boot_mode [0.033529s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_cpu_model [0.049490s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_extra_params [0.035133s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate [0.042040s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params [0.033478s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue [0.050172s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_local_gb [0.061252s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_defaults [0.039701s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_no_rescue_ramdisk [0.045449s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info [0.034926s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_memory_mb [0.054075s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_boot.IRMCVirtualMediaBootTestCase.test_validate_rescue_ramdisk_not_exist [0.044954s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_driver_info_bios [0.033927s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_nics [0.045171s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_bios [0.034622s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__get_mac_addresses [0.039500s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_simple_storage [0.051167s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_cleaning [0.033857s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_exception [0.036491s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_kernel_params_for_ramdisk_uefi [0.033576s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_simple_storage_and_storage [0.047595s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_ipmi [0.041717s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_uefi [0.036195s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_storage [0.049952s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_inspect.IRMCInspectInternalMethodsTestCase.test__inspect_hardware_redfish [0.044387s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test__prepare_iso_image_with_node_external_http_url [0.038412s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config [0.050471s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_floppy_image [0.035850s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ignore_missing_system_vendor [0.053883s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_cleanup_iso_image [0.036036s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_ok [0.044678s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_corrupted [0.049272s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso [0.032887s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test__restore_bios_config_failed [0.041253s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_preserve_boot_mode [0.047714s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_boot_iso_user_supplied [0.032808s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image [0.031544s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config [0.049513s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_conf_update_pxe_disabled_false [0.050695s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_binary_url [0.033774s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_failed [0.043509s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_empty_pxe_port_macs [0.053595s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_configdrive_image_url [0.033840s] ... ok {1} ironic.tests.unit.drivers.modules.irmc.test_management.IRMCManagementFunctionsTestCase.test_backup_bios_config_skipped [0.040995s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso [0.034666s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_no_mac [0.051694s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso [0.034090s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_existing_iso_vendor_prefix [0.033313s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_none_pxe_port_macs [0.054660s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_all_physnets [0.105193s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_external_ip [0.032948s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_disabled [0.058567s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_network_data [0.034882s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_flat [0.056653s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_deploy_iso_tls [0.033915s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_hardware_with_set_port_pxe_enabled [0.059157s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron [0.045538s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image [0.032736s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_inspect_port_creation [0.046681s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_file [0.033031s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_neutron_missed [0.046033s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_inspect.RedfishInspectTestCase.test_validate [0.033208s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_disk_image_prefix [0.034752s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image [0.032653s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_clean [0.063997s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_config_external_http_url [0.033061s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_physnet [0.104199s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_publish_with_node_external_http_url [0.033536s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_deploy [0.063166s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_floppy_image_with_external_ip [0.034283s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_matching_uuid [0.079060s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image [0.032622s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_create [0.055229s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_custom_cache [0.033145s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__check_node_raid_config_pending_delete [0.056103s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_physnets [0.110041s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_no_port_physnets [0.113710s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_file [0.251003s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_controller [0.243854s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_from_swift [0.034025s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_controller_no_controllers [0.027909s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_local [0.039660s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_first_controller_controllers [0.028800s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_first_controller_empty [0.027406s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_local_external_http_url [0.040825s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_first_controller_storage_controllers [0.027436s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_swift_noop [0.031448s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__get_storage_controller [0.037230s] ... ok {3} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageUtilsTestCase.test_prepare_remote_image_swift_schema [0.032512s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid0 [0.028925s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test__get_inspection_data_from_swift [0.031172s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid1 [0.026697s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test__get_inspection_data_from_swift_exception [0.030656s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet1 [0.324872s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid5 [0.028023s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test__store_inspection_data_in_swift [0.031559s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__max_volume_size_bytes_raid6 [0.029519s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_db [0.026955s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_db_exception [0.025292s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_failed [0.044425s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_nostore [0.024375s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet2 [0.107122s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_swift [0.025009s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_still_processing [0.044022s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_get_inspection_data_swift_exception [0.027877s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_success [0.042778s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_store_inspection_data_db [0.026877s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_store_inspection_data_nostore [0.025221s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_physnet3 [0.104532s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__raid_config_in_progress_task_mon_error [0.043520s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.IntrospectionDataStorageFunctionsTestCase.test_store_inspection_data_swift [0.025080s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid10 [0.030094s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test__volume_usage_per_disk_bytes_raid5 [0.027774s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.SwiftCleanUp.test_clean_up_swift_entries [0.046524s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_port_uuid [0.082491s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1a [0.043324s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.SwiftCleanUp.test_clean_up_swift_entries_with_404_exception [0.045833s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b [0.048170s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.SwiftCleanUp.test_clean_up_swift_entries_with_fail_exception [0.048372s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid [0.102818s] ... ok {3} ironic.tests.unit.drivers.modules.test_inspect_utils.SwiftCleanUp.test_clean_up_swift_entries_with_fail_exceptions [0.050945s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_IPMI_version_1_5 [0.026764s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_cipher_suite [0.026214s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test__get_free_portgroups_and_ports_portgroup_uuid_attached_vifs [0.106155s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_cipher_suite_error_noconfig [0.028125s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_cipher_suite_set_with_error_config [0.026692s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_empty_portgroup [0.053235s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_cipher_suite_set_with_error_noconfig [0.028374s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_exception [0.026053s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_first_call_to_address [0.025231s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ignores_standalone_portgroup [0.059136s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_immediate [0.261939s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_second_call_to_address_no_sleep [0.028949s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_no_matching_physnets [0.049955s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_second_call_to_address_sleep [0.027981s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_1b_apply_time_on_reset [0.048339s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_try_different_cipher_suite [0.027451s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_nothing_free [0.050675s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_two_calls_to_diff_address [0.028613s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2 [0.054605s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_check_exit_code [0.027844s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_first [0.057023s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_2_on_reset [0.049406s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_dual_bridging [0.026551s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_empty_username [0.026292s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_3 [0.049411s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_ironic_retries [0.026619s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_portgroup_physnet_match_first [0.061650s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_port [0.025844s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports [0.047176s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_single_bridging [0.027220s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_4 [0.058143s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_timeout [0.028587s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5a [0.044170s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first [0.055298s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_with_timing [0.028831s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_without_timing [0.028931s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_5b [0.062410s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_physnet_match_first2 [0.060702s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__exec_ipmitool_without_username [0.029250s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__prepare_ipmi_password_str_password [0.025153s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_case_6 [0.039518s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_ports_pxe_enabled_first [0.054054s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test__prepare_ipmi_password_with_numeric_password [0.028106s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_bmc_initialization_in_progress [0.029241s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_create_config_interface_type [0.056034s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_port [0.051602s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_insufficient_resources_for_session [0.029862s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_immediate [0.051427s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_node_busy [0.030497s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_get_free_port_like_object_vif_attached_to_portgroup [0.059412s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_out_of_space [0.030632s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_non_retryable_failure_timeout [0.028408s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_client [0.047405s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_bmc_initialization_in_progress [0.028127s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_insufficient_resources_for_session [0.026743s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_client [0.052959s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_node_busy [0.028635s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_no_tenant_vif [0.050914s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_out_of_space [0.031590s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retries_exceeded_timeout [0.027990s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_common.TestCommonFunctions.test_plug_port_to_tenant_network_smartnic_port [0.061551s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_bmc_initialization_in_progress [0.027776s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_insufficient_resources_for_session [0.027341s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_delete_config_on_reset [0.269412s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id [0.049557s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_node_busy [0.027958s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_get_physical_disks [0.041062s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_out_of_space [0.028282s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_portgroup [0.055506s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodOnEnvPersistenceTestCase.test_exec_ipmitool_exception_retry_timeout [0.029257s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_update_raid_config_missing_raid_type [0.040443s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue [0.037978s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config [0.038518s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__bind_flat_ports_set_binding_host_id_raise [0.060202s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_validate_raid_config_scsi [0.037464s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel [0.043788s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports [0.050095s] ... ok {2} ironic.tests.unit.drivers.modules.redfish.test_raid.RedfishRAIDTestCase.test_volume_create_error_handler [0.039151s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size [0.041940s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test__unbind_flat_ports_portgroup [0.062932s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail [0.044841s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network [0.051408s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_fail_by_agent_consumed_memory [0.042028s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_cleaning_network_from_node [0.074778s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_disabled [0.049284s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled [0.040321s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network [0.051784s] ... ok {3} ironic.tests.unit.drivers.modules.test_ipxe.iPXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk [0.272130s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_qcow2 [0.040231s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_maintenance [0.046150s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_inspection_network_from_node [0.075619s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_raw_stream_enabled_format_raw [0.045649s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_not_retry_with_token [0.038300s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_provisioning_network [0.046171s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_recent_power_change [0.044651s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_check_image_size_without_memory_mb [0.088513s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_add_rescuing_network [0.057163s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_retry [0.062212s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_http_image [0.044284s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_get_node_network_data [0.051741s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source [0.026128s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_status_wrong_state [0.053589s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_invalid_image_download_source2 [0.025591s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_init_no_cleaning_network [0.035404s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args [0.025707s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEBootRetryTestCase.test_check_boot_timeouts [0.043374s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_file [0.024693s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network [0.053912s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_http_boot_not_enabled [0.033848s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_http [0.023848s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_missing_args_local_via_node [0.024172s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue [0.038482s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_cleaning_network_from_node [0.064747s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent.TestAgentMethods.test_validate_http_provisioning_not_http [0.025795s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_fails_no_rescue_kernel [0.042050s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_provisioning_network [0.048108s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.ContinueServiceTest.test_continue_servicing [0.058916s] ... ok {3} ironic.tests.unit.drivers.modules.test_pxe.PXEValidateRescueTestCase.test_validate_rescue_no_rescue_ramdisk [0.043933s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc [0.021410s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_remove_rescuing_network [0.051051s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitch [0.020904s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.ContinueServiceTest.test_continue_servicing_after_reboot [0.058169s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_masterswitchplus [0.023128s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate [0.041872s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_apc_rackpdu [0.022182s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_aten [0.020932s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.ContinueServiceTest.test_continue_servicing_reboot [0.064173s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_from_node [0.055595s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_cyberpower [0.020989s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default [0.022828s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.ContinueServiceTest.test_continue_servicing_running [0.045849s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection [0.052071s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version [0.021927s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_default_version_and_missing_community [0.021311s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps [0.041627s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_eatonpower [0.022039s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_validate_inspection_exc [0.044123s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_agent_get_steps_deploy [0.043085s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_driver [0.026599s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_attach [0.044419s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_outlet [0.021873s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step [0.043426s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_invalid_version [0.024732s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_detach [0.046768s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_address [0.023328s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_running [0.043304s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v1 [0.025012s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_list [0.042571s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_community_snmp_v2c [0.021516s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_clean_step_version_mismatch [0.051939s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_driver [0.021736s] ... ok {1} ironic.tests.unit.drivers.modules.network.test_flat.TestFlatInterface.test_vif_port_changed [0.051648s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_outlet [0.020942s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_deploy_step [0.043942s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_missing_user [0.022486s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_clean_up_instance_cdrom_and_floppy [0.040155s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_raritan_pdu2 [0.021032s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_execute_service_step [0.042730s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_community [0.020646s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_clean_up_instance_only_cdrom [0.039040s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_read_write_community [0.031216s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step [0.044843s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry3 [0.025546s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_servertech_sentry4 [0.023427s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_find_step_not_found [0.041975s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port [0.023890s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps [0.041979s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_port_default [0.028155s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v1 [0.028198s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_deploy_steps_only_oob [0.055724s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v2c [0.024168s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3 [0.023375s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_badproto [0.022722s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_custom_interface [0.052647s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_default_proto [0.021469s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_key_proto [0.021226s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_missing_steps [0.046033s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_nokey [0.021272s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_auth_short_key [0.022487s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_compat [0.023928s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities [0.070342s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_engine_id [0.021158s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_clean_up_instance_ramdisk [0.369880s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_context_name [0.020879s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.StepMethodsTestCase.test_get_steps_override_priorities_none [0.041744s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_badproto [0.022701s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_clean_up_ramdisk [0.035404s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_default_proto [0.023331s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps [0.053189s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_deploy_info [0.040798s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_key_proto [0.027691s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_nokey [0.022765s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_busy [0.045532s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_deploy_info_exc [0.032544s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_snmp_v3_priv_short_key [0.023011s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_arch_deploy [0.032237s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_teltronix [0.022002s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_vertivgeist_pdu [0.021711s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_arch_rescue [0.033275s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_deploy [0.070529s] ... ok {3} ironic.tests.unit.drivers.modules.test_snmp.SNMPValidateParametersTestCase.test__parse_driver_info_write_community [0.022201s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_hierarchy_deploy [0.033554s] ... ok {3} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_boot_mode_default_impl [0.020847s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_interface [0.048806s] ... ok {3} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_indicator_state_default_impl [0.021880s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_hierarchy_missing_param_deploy [0.033119s] ... ok {3} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_mac_addresses [0.019865s] ... ok {3} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_boot_modes_default_impl [0.024976s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_hierarchy_missing_param_rescue [0.037860s] ... ok {2} ironic.tests.unit.drivers.modules.test_agent_base.TestRefreshCleanSteps.test_refresh_steps_missing_steps [0.055372s] ... ok {3} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_get_supported_indicators_default_impl [0.021235s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios [0.021248s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_choose_by_hierarchy_rescue [0.038663s] ... ok {3} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_inject_nmi_default_impl [0.020604s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_bios_default [0.026856s] ... ok {3} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_boot_mode_default_impl [0.022824s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_deploy [0.034268s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default [0.025406s] ... ok {3} ironic.tests.unit.drivers.test_base.TestManagementInterface.test_set_indicator_state_default_impl [0.021928s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_default_set [0.025249s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_exc [0.035714s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_capabilities [0.019938s] ... ok {3} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_default_interfaces [0.044373s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info [0.018816s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_from_conf_deploy [0.036638s] ... ok {3} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_agent_rescue [0.041627s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_from_conf_deploy_by_arch [0.032195s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_from_conf_rescue [0.034653s] ... ok {3} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_inspector [0.041748s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_from_conf_rescue_by_arch [0.036042s] ... ok {3} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_no_bios [0.046476s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_iso [0.033752s] ... ok {3} ironic.tests.unit.drivers.test_ilo.IloHardwareTestCase.test_override_with_pxe [0.043079s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_mixed_source_deploy [0.033608s] ... ok {3} ironic.tests.unit.drivers.test_redfish.RedfishHardwareTestCase.test_default_interfaces [0.044060s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_mixed_source_deploy_by_arch [0.036358s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_cap [0.225069s] ... ok {3} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_missing [0.025674s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_for_deploy_using_instance_info_secure_boot [0.018882s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_mixed_source_rescue [0.041487s] ... ok {3} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_supported_set [0.023368s] ... ok {2} ironic.tests.unit.drivers.modules.test_boot_mode_utils.GetBootModeTestCase.test_get_boot_mode_uefi [0.018635s] ... ok {3} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_missing [0.023224s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_mixed_source_rescue_by_arch [0.033745s] ... ok {3} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_default [0.021112s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_cleaning_vif_port_id [0.044005s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_ramdisk [0.032844s] ... ok {3} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default [0.022106s] ... ok {3} ironic.tests.unit.objects.test_allocation.TestConvertToVersion.test_owner_unsupported_set_remove [0.020797s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_parse_driver_info_rescue [0.036894s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_provisioning_vif_port_id [0.053561s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_create [0.022288s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_delete [0.022458s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.GetSingleNicTestCase.test_get_single_nic_with_vif_port_id [0.049026s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get [0.025447s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_local_boot_option [0.064956s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test__check_disk_layout_unchanged [0.024465s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_get_by_node_id [0.022930s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test__check_disk_layout_unchanged_fails [0.022524s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_create [0.022271s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_configdrive [0.028083s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_local_whole_disk_image [0.082534s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_good [0.025156s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_ephemeral_disk [0.031106s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_ephemeral_gb [0.023478s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_preserve_ephemeral [0.023232s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_normal_boot [0.087851s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_invalid_root_gb [0.045143s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_ramdisk_boot [0.067047s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_missing_instance_source [0.029504s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_missing_root_gb [0.022626s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_non_image_deploy [0.023036s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_ramdisk_boot_iso [0.066256s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_delete [0.274223s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image [0.024790s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_list_save [0.022512s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image_anaconda [0.024033s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_save [0.023723s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_nonglance_image_no_kernel [0.023551s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_ramdisk_boot_iso_boot [0.067869s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_unicode_swap_mb [0.024625s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_create_and_update [0.029924s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_ephemeral_gb [0.022824s] ... ok {3} ironic.tests.unit.objects.test_bios.TestBIOSSettingObject.test_sync_node_setting_delete_nochange [0.032547s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_ephemeral_missing_format [0.022345s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_instance_ramdisk_boot_render_configdrive [0.064250s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_create [0.025722s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_preserve_ephemeral_false [0.035770s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_destroy [0.022973s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_ramdisk_fast_track [0.047760s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_id [0.024439s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_valid_preserve_ephemeral_true [0.034831s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_name [0.025101s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_whole_disk_image [0.027074s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_ramdisk_no_debug [0.051893s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_get_by_uuid [0.025784s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.InstanceInfoTestCase.test_parse_instance_info_whole_disk_image_missing_root [0.024375s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list [0.022302s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_check_interface_capability [0.022334s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_list_by_names [0.021994s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_prepare_ramdisk_with_params [0.060428s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_refresh [0.022429s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume [0.044295s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_boot_iso [0.036817s] ... ok {3} ironic.tests.unit.objects.test_deploy_template.TestDeployTemplateObject.test_save [0.023971s] ... ok {3} ironic.tests.unit.objects.test_node_inventory.TestNodeInventoryObject.test_create [0.021956s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_get_remote_boot_volume_none [0.047737s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_correct_vendor [0.040106s] ... ok {3} ironic.tests.unit.objects.test_node_inventory.TestNodeInventoryObject.test_destroy [0.022912s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification [0.023133s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_errors_with_lack_of_support [0.035208s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot [0.043803s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_emit_notification_empty_schema [0.024001s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_inspection [0.034732s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_invalid_status_fails [0.019827s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_exception [0.038042s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_make_status_invalid [0.017949s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_kernel_ramdisk [0.039120s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_with_status [0.018422s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false [0.036969s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_event_type_without_status_fails [0.017670s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_local [0.034209s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_has_secrets [0.019745s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_is_iscsi_boot_false_fc_target [0.042865s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_no_secrets [0.018887s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishHTTPBootTestCase.test_validate_missing [0.037499s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_mask_secrets_not_affected [0.018190s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_error [0.039392s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_level_too_low [0.022302s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__has_vmedia_device [0.042877s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_notifs_disabled [0.023917s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_fc [0.061883s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_no_emit_schema_not_populated [0.025161s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__has_vmedia_device_inserted [0.038081s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema [0.020981s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_missing_required_obj_field [0.018076s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_already_inserted [0.046158s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_populate_storage_driver_internal_info_iscsi [0.060298s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_no_object_field [0.020088s] ... ok {3} ironic.tests.unit.objects.test_notification.TestNotificationBase.test_populate_schema_nullable_field_auto_populates [0.025697s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_anew [0.054454s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_create [0.025761s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TestStorageInterfaceUtils.test_tear_down_storage_configuration [0.075748s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_destroy [0.023057s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get [0.023725s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_anew_dvd [0.067750s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_bios [0.041217s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_id [0.023229s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_get_by_uuid [0.022316s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_ipmifailure_uefi [0.051714s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list [0.021807s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_node_id [0.030365s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_okay [0.046523s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_by_volume_id [0.024710s] ... ok {2} ironic.tests.unit.drivers.modules.test_deploy_utils.TrySetBootDeviceTestCase.test_try_set_boot_device_some_other_exception [0.038622s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_list_none [0.034066s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_both_master_and_dest_out_of_date [0.024492s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_payload_schemas [0.022045s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate [0.022756s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_refresh [0.021289s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_and_master_uptodate_no_force_raw [0.023061s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save [0.022260s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_dest_out_of_date [0.025851s] ... ok {3} ironic.tests.unit.objects.test_volume_target.TestVolumeTargetObject.test_save_after_refresh [0.030604s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_hardlink_fails_fallback_to_copy [0.024743s] ... ok {3} ironic.tests.unit.pxe_filter.test_dnsmasq.TestUpdate.test_no_update [0.025333s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_master_out_of_date [0.023720s] ... ok {3} ironic.tests.unit.pxe_filter.test_dnsmasq.TestUpdate.test_only_allow [0.020817s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir [0.020247s] ... ok {3} ironic.tests.unit.pxe_filter.test_dnsmasq.TestUpdate.test_only_deny [0.019000s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_anew_dvd_retry [0.322347s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_no_master_dir_memory_low [0.020711s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid [0.019796s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_bad_device [0.035246s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheFetch.test_fetch_image_not_uuid_no_force_raw [0.020330s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_dest [0.018723s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test__insert_vmedia_while_ejecting [0.039879s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_no_master [0.019539s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_out_of_date [0.019643s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_dest_path_if_stale_up_to_date [0.018929s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_everything [0.051658s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img [0.019708s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_glance_img_not_cached [0.019741s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_from_all_resources [0.042637s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_same_time [0.019722s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_master_up_to_date [0.025369s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_not_inserted [0.044793s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_master [0.025879s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_no_updated_at [0.020003s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_specific [0.042807s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_cache.TestUpdateImages.test__delete_master_path_if_stale_out_of_date [0.020056s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_unknown [0.040834s] ... ok {2} ironic.tests.unit.drivers.modules.test_image_utils.RedfishImageHandlerTestCase.test_redfish_kernel_param_config [0.025499s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_fail [0.019874s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_no_ipmitool [0.026058s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_boot.RedfishVirtualMediaBootViaSystemTestCase.test_eject_vmedia_with_dvd_cisco_ucs [0.051045s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service [0.024820s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_event_service_error [0.025057s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_system_collection [0.024802s] ... 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/tmpzb9nvwy8/tmpxbadu_q_' {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_system_collection_error [0.026833s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor [0.026694s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_task_monitor_error [0.025047s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service [0.026776s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_get_update_service_error [0.023448s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info [0.026063s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_all_options_pass [0.234426s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme [0.024351s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_fail [0.028846s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme_ipv6_brackets_added [0.026236s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_no_ipmitool [0.033109s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_default_scheme_with_port [0.025257s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_dual_bridge_pass [0.026143s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_address [0.024200s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_fail [0.020728s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_auth_type [0.026854s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_no_ipmitool [0.022085s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_single_bridge_pass [0.020241s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_string_value_verify_ca [0.028719s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_system_id [0.026194s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_fail [0.042522s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_invalid_value_verify_ca [0.025410s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_no_ipmitool [0.030903s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_info [0.025411s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckOptionSupportedTestCase.test_check_timing_pass [0.020116s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_missing_system_id [0.026106s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__exec_stop_console [0.043541s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_path_verify_ca [0.029691s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_auth_type [0.025854s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd [0.040141s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_capath [0.027556s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_valid_string_value_verify_ca [0.034642s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__get_ipmi_cmd_without_user [0.048526s] ... ok {1} ironic.tests.unit.drivers.modules.redfish.test_utils.RedfishUtilsTestCase.test_parse_driver_info_with_root_prefix [0.025410s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console [0.043547s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue [0.056747s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_empty_password [0.050575s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up [0.047170s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail [0.051327s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_no_manage_boot [0.046581s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test__start_console_fail_nodir [0.056780s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_clean_up_smartnic [0.048124s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate [0.040928s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_no_manage_agent_boot [0.049218s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_invalid_port [0.035172s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port [0.035945s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_power_on [0.052385s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_missing_port_auto_allocate [0.036694s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate [0.040527s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_console_validate_wrong_ipmi_protocol_version [0.034538s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_empty_rescue_password [0.046794s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_get_console [0.047521s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_fails_no_rescue_password [0.047978s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console [0.043847s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_validate_no_manage_agent [0.041731s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_alloc_port [0.055185s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_rescue_with_smartnic_port [0.055126s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_start_console_with_port [0.044655s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue [0.060943s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console [0.046200s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolSocatDriverTestCase.test_stop_console_fail [0.053913s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_no_manage_agent_boot [0.068604s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootBaseUtils.test__node_set_boot_device_for_network_boot [0.041820s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_power_on [0.056406s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_instance [0.046707s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.AgentRescueTestCase.test_agent_unrescue_with_smartnic_port [0.061142s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk [0.061795s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_clean_up [0.053957s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_clean_up_ramdisk_rescue [0.064270s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_ensure_boot_interface_is_not_http_enabled [0.041627s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_get_properties [0.049064s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance [0.059551s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_active [0.057882s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy [0.288177s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi [0.067754s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_fast_track [0.066018s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_iscsi_bios [0.069283s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_storage_should_write_image_false [0.051537s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_netboot_ramdisk [0.068280s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_deploy_with_deployment_reboot [0.058645s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk [0.067153s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps [0.046445s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_clean_steps_config_priority [0.045990s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_bios [0.069455s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_properties [0.031243s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_get_service_steps [0.048130s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_ramdisk_with_kernel_arg [0.068915s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_instance_with_fallback [0.064297s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare [0.077466s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_active_and_unrescue_states [0.062585s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk [0.075657s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_adopting [0.049000s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_cleaning [0.073975s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_boot_from_volume [0.063913s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes [0.072642s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning [0.046020s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_fast_track [0.050311s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported [0.078425s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_cleaning_manage_agent_boot_false [0.055108s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift [0.073631s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_fast_track [0.067038s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_swift_whole_disk_image [0.072433s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot [0.051840s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_localboot [0.061791s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_file_different [0.076637s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_no_manage_agent_boot [0.052519s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_image [0.059800s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_partition_localboot_ppc64 [0.057825s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_instance_boot_storage_should_write_image_with_smartnic [0.049373s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_with_copy_no_file [0.276099s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_manage_agent_boot_false [0.076830s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_ipxe_without_copy [0.074511s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_rescue_states [0.096121s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_rescue [0.076924s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_service [0.045702s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called [0.079389s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_storage_write_false [0.067375s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm [0.071657s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_neutron_net [0.076310s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_prepare_with_smartnic_port [0.073023s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic [0.087055s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down [0.068790s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios [0.086353s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning [0.045568s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_cleaning_manage_agent_boot_false [0.042318s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi [0.085761s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_service [0.043912s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_prepare_ramdisk_uefi [0.072771s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_tear_down_with_smartnic_port [0.070646s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_kernel [0.042499s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate [0.048718s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_missing_deploy_ramdisk [0.039271s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_driver_info_manage_agent_boot_false [0.049984s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_fail_no_port [0.041239s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good [0.041791s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_file_image_no_checksum [0.050352s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_good_whole_disk_image [0.040626s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_instance_info_missing_params [0.050486s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection [0.044688s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_image_type [0.050478s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_inspection_no_inspection_ramdisk [0.052508s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_proxies [0.041349s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_no_image_source_for_local_boot [0.041475s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints [0.041501s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_skip_check_write_image_false [0.041209s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_invalid_root_device_hints_iinfo [0.040330s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso [0.048644s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum [0.049854s] ... ok {2} ironic.tests.unit.drivers.modules.test_ipxe.iPXEBootTestCase.test_validate_with_boot_iso_and_image_source [0.050787s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_checksum_os_algo [0.049737s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_instance [0.048471s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_algo [0.051689s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk [0.056843s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_checksum [0.051343s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_clean_up_ramdisk_rescue [0.050647s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_nonglance_image_no_os_image_hash [0.048867s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_get_properties [0.044205s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_validate_storage_should_write_image_false [0.042808s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance [0.055985s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_active [0.069936s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart [0.070683s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_kickstart_bios [0.066463s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image [0.271408s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_lenovo [0.050546s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_basic_auth_success [0.054596s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_exists [0.065949s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_basic_auth_success_blocked [0.053050s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_image_source_is_url [0.051884s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_instance_ramdisk_pxe_conf_missing [0.065189s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_partition_image [0.052096s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_render_configdrive [0.052998s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_no_proxy_without_proxies [0.052700s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent.TestAgentDeploy.test_write_image_with_proxies [0.052561s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue [0.046671s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk [0.276455s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_bad_command_result [0.042697s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_exc [0.043919s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_bios [0.071680s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_missing_command_result [0.045597s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_cleaning [0.068861s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.AgentRescueTests.test__finalize_rescue_with_smartnic_port [0.047178s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes [0.074942s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning [0.068539s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_conflicting_boot_modes_set_unsupported [0.067744s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_after_reboot [0.063651s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue [0.067726s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_automated_clean_version_mismatch [0.055995s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_clean_version_mismatch_fail [0.050268s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_rescue_bios [0.068590s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_fail [0.044134s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_not_called [0.068210s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_manual_clean_version_mismatch [0.059819s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_bm [0.063505s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_no_step_running [0.055873s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_old_command [0.050528s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_boot_mode_on_ironic [0.076231s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_reboot [0.061375s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_bios [0.078093s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_running [0.049563s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_unknown [0.061042s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_set_default_boot_mode_on_ironic_uefi [0.088602s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook [0.061103s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_prepare_ramdisk_uefi [0.076743s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_cleaning_with_hook_fails [0.054140s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_kernel [0.043157s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_missing_deploy_ramdisk [0.042168s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.ContinueCleaningTest.test_continue_manual_cleaning [0.055270s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_fail_no_port [0.042550s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning [0.049354s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good [0.047400s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_fails [0.050745s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_good_whole_disk_image [0.040897s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_cleaning_polling [0.050727s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection [0.049279s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_first_run [0.048631s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_inspection_no_inspection_ramdisk [0.058716s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_deploy_second_run [0.050368s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_fail_http_url_not_set [0.056837s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_servicing [0.053407s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_kickstart_missing_stage2_id [0.060490s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_continue_servicing_fails [0.067836s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_no_image_source_for_local_boot [0.044599s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_done_raises_with_event [0.047235s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_non_local [0.043582s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_deploy_fails [0.051660s] ... ok {2} ironic.tests.unit.drivers.modules.test_pxe.PXEBootTestCase.test_validate_skip_check_write_image_false [0.050344s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance [0.082635s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy [0.087446s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_configdrive [0.089984s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_in_maintenance_abort [0.208505s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_deploy_with_smartnic_port [0.121742s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_execute_clean_step [0.043219s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state [0.079167s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_clean_steps [0.041888s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_get_deploy_steps [0.039480s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_noops_in_wrong_state2 [0.096681s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare [0.057406s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_polling [0.050727s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_active [0.047254s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_cleaning [0.043767s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track [0.082719s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_fast_track_via_driver_info [0.082717s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_records_when_appropriate [0.130129s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue [0.049269s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_instance_ramdisk [0.292392s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_rescue_fails [0.049722s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_prepare_unrescuing [0.047805s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_tear_down_cleaning [0.040743s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate [0.042665s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_calls_boot_validate [0.039876s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_interface_mismatch [0.047255s] ... ok {2} ironic.tests.unit.drivers.modules.test_ramdisk.RamdiskDeployTestCase.test_validate_with_boot_iso [0.043650s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test___init__ [0.025972s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean [0.265949s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_read [0.046997s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v1_write [0.047493s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_clean_fails [0.097664s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_auth_v3 [0.048122s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_resume_service [0.055794s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_client [0.026549s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_context [0.045766s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_base.HeartbeatMixinTest.test_heartbeat_with_reservation [0.057111s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_agent_token_required [0.020276s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport [0.049569s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_fail_all_attempts [0.023431s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_one_timeout [0.022261s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_retries [0.050686s] ... ok {1} ironic.tests.unit.drivers.modules.test_agent_client.TestAgentClientAttempts.test__command_succeed_after_two_timeouts [0.023336s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_both_clean_up [0.027675s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_custom_timeout [0.050697s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_another_fs [0.028379s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_clean_up_fail [0.030461s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test__get_transport_err [0.052828s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_no_clean_up [0.026933s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.CleanupImageCacheTestCase.test_one_clean_up [0.027211s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get [0.047962s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image [0.020221s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_large_url [0.019660s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_engine [0.047717s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_linkfail [0.026432s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_cache.TestImageCacheDownload.test__download_image_raises_memory_guard [0.019468s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_err_transport [0.049677s] ... ok {1} ironic.tests.unit.drivers.modules.test_image_utils.Ilo5ImageHandlerTestCase.test_ilo5_kernel_param_config [0.025162s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_localhost_as_url_ignored [0.029136s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next [0.059068s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_localhost_ignored [0.037303s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_engine [0.045760s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_normal_ip [0.026114s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_normal_ip_as_url [0.033842s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_get_next_err_transport [0.045939s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_normal_ipv6_as_url [0.028996s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_redfish_bmc_address_ipv6_brackets_no_scheme [0.024314s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set [0.045891s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_resolved_host [0.026254s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_engine [0.047049s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.GetBMCAddressesTestCase.test_resolved_host_in_url [0.026858s] ... ok {2} ironic.tests.unit.drivers.modules.test_snmp.SNMPClientTestCase.test_set_err_transport [0.050411s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo [0.021538s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist [0.079089s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_description_invalid [0.020165s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_empty_dict [0.020327s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_missing_description [0.019790s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_not_dict [0.018285s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_attempts_port_creation_blindly [0.075426s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_required_invalid [0.018164s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.InspectFunctionTestCase.test_create_ports_if_not_exist_mac_exception [0.046122s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupCacheTestCase.test_clear [0.027150s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupCacheTestCase.test_new_value [0.031450s] ... ok {1} ironic.tests.unit.drivers.modules.test_inspect_utils.LookupCacheTestCase.test_replace_with_empty [0.058887s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls [0.031843s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls_already_checked [0.021248s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls_for_socat [0.020825s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_console_init_calls_for_socat_already_checked [0.021438s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_management_init_calls [0.020025s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_arg_unknown_key [0.289502s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_management_init_calls_already_checked [0.023972s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test__validate_argsinfo_not_dict [0.018236s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls [0.020941s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_all_args [0.017985s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls_already_checked [0.020340s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_abortable [0.018166s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls_raises_1 [0.020168s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_argsinfo [0.027327s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls_raises_2 [0.024949s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_bad_priority [0.028550s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_power_init_calls_raises_3 [0.020616s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_vendor_passthru_init_calls [0.020795s] ... ok {2} ironic.tests.unit.drivers.test_base.CleanStepDecoratorTestCase.test_clean_step_priority_only [0.032894s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolCheckInitTestCase.test_vendor_passthru_init_calls_already_checked [0.028957s] ... ok {2} ironic.tests.unit.drivers.test_base.DeployStepTestCase.test_get_and_execute_deploy_steps [0.037420s] ... ok {2} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_check_func_references [0.018088s] ... ok {2} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_exclusive_task_metadata [0.016826s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__allocate_port [0.045963s] ... ok {2} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_ironicexception [0.022028s] ... ok {2} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_noexception [0.019129s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_cold [0.044096s] ... ok {2} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_nonironicexception [0.025058s] ... ok {2} ironic.tests.unit.drivers.test_base.PassthruDecoratorTestCase.test_passthru_shared_task_metadata [0.017850s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_fail [0.039897s] ... ok {2} ironic.tests.unit.drivers.test_base.TestDeployInterface.test_warning_on_heartbeat [0.018083s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__bmc_reset_ok [0.041015s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_default_interfaces [0.040853s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_debug [0.025960s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_failed [0.024555s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_inspector [0.038633s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_missing_sensor_reading [0.024664s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_raid [0.049835s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__parse_ipmi_sensor_data_ok [0.024673s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test__release_allocated_port [0.049114s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_bios [0.049694s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_detect_vendor [0.039887s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_inspect [0.039571s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_management_and_power [0.039473s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_fail [0.043891s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_raid [0.041508s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_dump_sdr_ok [0.040626s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_force_boot_device_persistent [0.039368s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_vendor [0.048341s] ... ok {2} ironic.tests.unit.drivers.test_drac.IDRACHardwareTestCase.test_override_with_redfish_virtual_media_boot [0.039915s] ... ok {2} ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_default_interfaces [0.035405s] ... ok {2} ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties [0.024319s] ... ok {2} ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_get_properties_none [0.020337s] ... ok {2} ironic.tests.unit.drivers.test_generic.ManualManagementHardwareTestCase.test_supported_interfaces [0.034847s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs [0.019585s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_IPA_command_fail [0.019173s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_command_fail [0.018675s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_fs [0.020447s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_swift [0.019220s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state [0.259274s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_storage_fail_unkown [0.019420s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_collect_ramdisk_logs_with_label [0.018953s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_power_state_exception [0.043335s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_get_ramdisk_logs_file_name [0.020060s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_local [0.022054s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_get_properties [0.040400s] ... ok {2} ironic.tests.unit.drivers.test_utils.UtilsRamdiskLogsTestCase.test_store_ramdisk_logs_swift [0.025806s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_create [0.021350s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_force_set_boot_device_ok_bios [0.050197s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_bad_id_and_uuid_and_name [0.020982s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_by_id [0.020877s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device [0.042739s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_by_name [0.021834s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_get_by_uuid [0.023715s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_fail [0.046192s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_list [0.022369s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_payload_schemas [0.020540s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_persistent [0.042982s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_refresh [0.020661s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_save [0.022058s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_boot_device_unknown_dev [0.041614s] ... ok {2} ironic.tests.unit.objects.test_allocation.TestAllocationObject.test_save_after_refresh [0.027116s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_list [0.021427s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_get_supported_boot_devices [0.040713s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_load [0.021077s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_refresh [0.021670s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_fail [0.041509s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register [0.022164s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_hardware_interfaces [0.021712s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_inject_nmi_ok [0.043136s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group [0.021515s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_uppercased [0.021984s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_no_force_set_boot_device_bios [0.042483s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_into_group_with_update [0.021902s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_bad_device [0.040244s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_update_existing_true [0.022111s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_register_with_invalid_group [0.020848s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_exec_failed [0.042362s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_save [0.021642s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_touch [0.021488s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_ok_bios [0.039568s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister [0.022507s] ... ok {2} ironic.tests.unit.objects.test_conductor.TestConductorObject.test_unregister_all_hardware_interfaces [0.021732s] ... ok {2} ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_bad_value [0.019196s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_persistent_bios [0.051375s] ... ok {2} ironic.tests.unit.objects.test_fields.TestNotificationLevelField.test_coerce_good_value [0.018395s] ... ok {2} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test__repr__includes_default_function_name_and_source_hash [0.017620s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi [0.042593s] ... ok {2} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_default_as_function [0.017316s] ... ok {2} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function [0.017098s] ... ok {2} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_function_invalid_type [0.016864s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_onetime_smci [0.048144s] ... ok {2} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_invalid_type [0.016942s] ... ok {2} ironic.tests.unit.objects.test_fields.TestStringFieldThatAcceptsCallable.test_coerce_string [0.016532s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent [0.041308s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_missing [0.019553s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_supported_set [0.020258s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_missing [0.019744s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_uefi_and_persistent_smci [0.047681s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_unknown_exception [0.045475s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_bios [0.040672s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_1_uefi [0.043151s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_bios [0.043099s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_default [0.213591s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_set_boot_device_without_timeout_2_uefi [0.044277s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_no_remove_non_default [0.020015s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_allocation_id_unsupported_set_remove [0.019665s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_fail [0.043702s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_missing [0.019335s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_supported_set [0.019405s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_management_interface_validate_good [0.041859s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_missing [0.019964s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_default [0.019625s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_no_remove_non_default [0.019511s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_power_validate [0.041289s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_automated_clean_unsupported_set_remove [0.020006s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_missing [0.020143s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_already_off [0.042732s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_supported_set [0.020016s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_missing [0.019690s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_off [0.042662s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_default [0.019906s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_no_remove_non_default [0.019274s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_fail_power_on [0.041056s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_bios_unsupported_set_remove [0.020629s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_missing [0.020456s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_ok [0.042346s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_supported_set [0.020163s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_missing [0.020178s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_fail [0.042385s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_default [0.019805s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_no_remove_non_default [0.021926s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_reboot_timeout_ok [0.044484s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_boot_mode_unsupported_set_remove [0.021735s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_set [0.020116s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_fail [0.039984s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_supported_unset [0.020197s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set [0.019247s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_set_no_remove [0.019591s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_from_clean_step [0.048369s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_conductor_group_unsupported_unset [0.020278s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_missing [0.022533s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_is_in_step_list [0.043384s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_supported_set [0.020516s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_missing [0.019681s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_ok [0.041094s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_default [0.020835s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_no_remove_non_default [0.019961s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_send_raw_bytes_returns [0.043598s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_description_unsupported_set_remove [0.019980s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_missing [0.021920s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_invalid_state [0.040083s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_supported_untouched [0.020441s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_missing [0.020642s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_ok [0.041415s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove [0.020673s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_fault_unsupported_set_remove_in_maintenance [0.020623s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_off_timeout_ok [0.042237s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_supported_missing [0.020842s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_supported_set [0.020217s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_fail [0.043596s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_unsupported_missing [0.020932s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_unsupported_set_no_remove_default [0.023594s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_ok [0.042934s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_unsupported_set_no_remove_non_default [0.020728s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_firmware_unsupported_set_remove [0.020538s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_fail [0.041693s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_missing [0.020525s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_supported_set [0.019704s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_timeout_ok [0.042355s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_missing [0.019346s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_default [0.019608s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot [0.043428s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_no_remove_non_default [0.020127s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_lessee_unsupported_set_remove [0.020002s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_power_on_with_next_boot_timeout [0.043118s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_missing [0.020463s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_supported_set [0.020016s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_ok [0.041616s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_missing [0.019954s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_default [0.019643s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_power_off_timeout_ok [0.043687s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_no_remove_non_default [0.019729s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_owner_unsupported_set_remove [0.019424s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_missing [0.019961s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_ok [0.041303s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_supported_set [0.020358s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_missing [0.019769s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_fail [0.042475s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_no_remove_non_default [0.019529s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_protected_unsupported_set_remove [0.019759s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_set_soft_reboot_timeout_ok [0.043107s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_missing [0.020437s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_supported_set [0.022210s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_missing [0.021015s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_cold [0.076341s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_default [0.021244s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_no_remove_non_default [0.019673s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_rescue_unsupported_set_remove [0.020838s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_missing [0.020529s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_supported_set [0.019622s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_missing [0.019582s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_no_remove_non_default [0.019672s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_retired_unsupported_set_remove [0.021611s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_default [0.019887s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_trait_unsupported_set_no_remove_non_default [0.020377s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_missing [0.019737s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_supported_set [0.019710s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing [0.020722s] ... ok {2} ironic.tests.unit.objects.test_node.TestConvertToVersion.test_traits_unsupported_missing_remove [0.019601s] ... ok {2} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_corrected_power_state_payload [0.020805s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_bmc_reset_warm [0.293713s] ... ok {2} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_crud_payload [0.019949s] ... ok {2} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload [0.019924s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_send_raw_bytes [0.042085s] ... ok {2} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_no_traits [0.020209s] ... ok {2} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_payload_traits_is_none [0.020812s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_call_send_raw_bytes_with_http_method [0.041740s] ... ok {2} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_power_state_payload [0.021076s] ... ok {2} ironic.tests.unit.objects.test_node.TestNodePayloads.test_node_set_provision_state_payload [0.020452s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_driver_routes [0.036105s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_cold_good [0.040959s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_good [0.040684s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__bmc_reset_warm_good [0.040899s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__parse_driver_info_fail [0.040522s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_fail [0.039903s] ... ok {2} ironic.tests.unit.objects.test_objects.TestObjectVersions.test_object_version_check [0.213195s] ... ok {2} ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_chooses_newer_properly [0.018261s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_validate__send_raw_bytes_good [0.040597s] ... ok {2} ironic.tests.unit.objects.test_objects.TestRegistry.test_hook_keeps_newer_properly [0.017548s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_create [0.020053s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolDriverTestCase.test_vendor_passthru_vendor_routes [0.032846s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_destroy [0.020287s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get [0.021096s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test___set_and_wait_no_needless_status_polling [0.042302s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_id [0.020485s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__check_cipher_suite_errors [0.026103s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_get_by_uuid [0.020752s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list [0.020928s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_empty_list [0.026043s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_by_node_id [0.023216s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_one_element [0.027627s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_list_none [0.021452s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__choose_cipher_suite_returns_last_to_first [0.025639s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_payload_schemas [0.019416s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_IPMI_version_1_5 [0.027163s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_refresh [0.020079s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save [0.021434s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite [0.028192s] ... ok {2} ironic.tests.unit.objects.test_volume_connector.TestVolumeConnectorObject.test_save_after_refresh [0.027919s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_error_noconfig [0.027956s] ... ok {2} ironic.tests.unit.test_base.DontBlockExecuteTestCase.test_no_exception_raised_for_execute [0.019281s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_config [0.028545s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_cipher_suite_set_with_error_noconfig [0.029951s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_exception [0.028362s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_first_call_to_address [0.028504s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_no_sleep [0.028514s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_second_call_to_address_sleep [0.028150s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_try_different_cipher_suite [0.027750s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_two_calls_to_diff_address [0.028008s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_check_exit_code [0.028843s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_dual_bridging [0.028034s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_empty_username [0.030063s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries [0.027945s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_ironic_retries_multiple [0.028441s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_port [0.029646s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_single_bridging [0.029856s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timeout [0.026889s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_with_timing [0.028357s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_timing [0.029531s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__exec_ipmitool_without_username [0.026945s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__ipmitool_timing_args [0.027630s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info [0.026908s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_have_credentials [0.026451s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_port [0.025070s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_invalid_ipmi_prot_version [0.025924s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite [0.026671s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_ipmi_1_5 [0.027830s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_cipher_suite_not_a_number [0.025729s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key [0.026380s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_hex_kg_key_odd_chars [0.026021s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_port_valid [0.026351s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_ipmi_prot_version_1_5 [0.026196s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_numeric_password [0.026133s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_allocated [0.027742s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_terminal_port_specified [0.025872s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_undefined_credentials [0.027534s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_missing_parameters [0.030995s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_not_supported [0.027866s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_dual_bridging_pass [0.028096s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_invalid_bridging_type [0.028081s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_no_bridging [0.028218s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_missing_parameters [0.028824s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_not_supported [0.028152s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__parse_driver_info_with_single_bridging_pass [0.027840s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_on_max_retries [0.043699s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_error [0.033064s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_exception [0.029376s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_off [0.029311s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__power_status_on [0.246883s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_caller_exception [0.028275s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_str_password [0.027316s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_tempfile_known_exception [0.028440s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_tempfile_unknown_exception [0.026749s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_with_numeric_password [0.027134s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__prepare_ipmi_password_write_exception [0.031979s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off [0.046174s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test__soft_power_off_max_retries [0.047139s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_bmc_initialization_in_progress [0.037284s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_insufficient_resources_for_session [0.039337s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_node_busy [0.030946s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_out_of_space [0.030067s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_non_retryable_failure_timeout [0.030824s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_bmc_initialization_in_progress [0.033445s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_insufficient_resources_for_session [0.029185s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_node_busy [0.028420s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_out_of_space [0.029422s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retries_exceeded_timeout [0.029309s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_bmc_initialization_in_progress [0.029140s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_insufficient_resources_for_session [0.028239s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_node_busy [0.027227s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_out_of_space [0.029806s] ... ok {1} ironic.tests.unit.drivers.modules.test_ipmitool.IPMIToolPrivateMethodTestCase.test_exec_ipmitool_exception_retry_timeout [0.029693s] ... ok {1} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_bios [0.020286s] ... ok {1} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_console [0.019410s] ... ok {1} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_inspect [0.020016s] ... ok {1} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_load_by_name [0.024626s] ... ok {1} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_rescue [0.019077s] ... ok {1} ironic.tests.unit.drivers.modules.test_noop.NoInterfacesTestCase.test_vendor [0.018901s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_deploy [0.093025s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_end [0.056228s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_error [0.054003s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_heartbeat_deploy_start [0.054120s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare [0.067290s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_active [0.051496s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_prepare_cleaning [0.048612s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.PXEAnacondaDeployTestCase.test_reboot_to_instance [0.090866s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_maintenance [0.050523s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_not_retry_with_token [0.038706s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_recent_power_change [0.037610s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_retry [0.048094s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_status_wrong_state [0.052913s] ... ok {1} ironic.tests.unit.drivers.modules.test_pxe.iPXEBootRetryTestCase.test_check_boot_timeouts [0.044238s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_error [0.043432s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_off [0.049618s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_on [0.042735s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_power_state_snmp_failure [0.043811s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_get_properties [0.043054s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot [0.042626s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_error [0.040161s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_snmp_failure [0.041774s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_reboot_timeout [0.040920s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_error [0.037354s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off [0.040204s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_error [0.040711s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_off_snmp_failure [0.039706s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on [0.040624s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_error [0.039663s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_snmp_failure [0.040097s] ... ok {1} ironic.tests.unit.drivers.modules.test_snmp.SNMPDriverTestCase.test_set_power_state_on_timeout [0.251869s] ... ok {1} ironic.tests.unit.drivers.test_base.CleanStepTestCase.test_get_and_execute_clean_steps [0.021491s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_all_args [0.018422s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_argsinfo [0.019072s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_bad_priority [0.025032s] ... ok {1} ironic.tests.unit.drivers.test_base.DeployStepDecoratorTestCase.test_deploy_step_priority_only [0.022721s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration [0.024799s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_delete_existing [0.021579s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_apply_configuration_invalid [0.019705s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_get_logical_disk_properties [0.019248s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate [0.019312s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_no_target_raid_config [0.018543s] ... ok {1} ironic.tests.unit.drivers.test_base.RAIDInterfaceTestCase.test_validate_raid_config [0.019332s] ... ok {1} ironic.tests.unit.drivers.test_base.TestFirmwareInterface.test_update_with_wrapper [0.017876s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_boot_interface [0.044330s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_console_interface [0.044281s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_deploy_interface [0.049942s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_driver_interfaces [0.042710s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_get_properties [0.037519s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_inspect_interface [0.043135s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_boot_device [0.041865s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_indicator_state [0.037838s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_properties [0.039615s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_boot_devices [0.040749s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_get_supported_indicators [0.041747s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_fail [0.038611s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_device_good [0.041435s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_boot_mode_good [0.046428s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_set_indicator_state_good [0.039033s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_management_interface_validate [0.037239s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_parse_sleep_range [0.037838s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_power_interface [0.035315s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_sleep_one [0.037932s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_sleep_range [0.042589s] ... ok {1} ironic.tests.unit.drivers.test_fake_hardware.FakeHardwareTestCase.test_sleep_zero [0.039303s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_default_interfaces [0.038380s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_agent_rescue [0.036129s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_cinder_storage [0.038016s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_noop_mgmt [0.036184s] ... ok {1} ironic.tests.unit.drivers.test_ipmi.IPMIHardwareTestCase.test_override_with_shellinabox [0.036391s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability [0.043009s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability_append [0.048195s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_add_node_capability_append_duplicate [0.055772s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_not_string [0.026077s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_to_dict [0.023561s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_to_dict_with_incorrect_format_fail [0.023361s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_to_dict_with_invalid_character_fail [0.025008s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_capabilities_to_dict_with_only_key_or_value_fail [0.023891s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_ensure_next_boot_device [0.038471s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_ensure_next_boot_device_clears_is_next_boot_persistent [0.047738s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_force_persistent_boot_false [0.046419s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_force_persistent_boot_true [0.046485s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_get_node_capability [0.024172s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_get_node_capability_returns_none [0.023679s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_get_node_mac_addresses [0.048600s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_normalize_mac_string [0.025415s] ... ok {1} ironic.tests.unit.drivers.test_utils.UtilsTestCase.test_normalize_mac_unicode [0.023772s] ... ok {1} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create [0.034909s] ... ok {1} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_create_with_node [0.030278s] ... ok {1} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy [0.040640s] ... ok {1} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_destroy_with_node [0.037531s] ... ok {1} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_node_uuid [0.029095s] ... ok {1} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_get_by_uuid [0.027320s] ... ok {1} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_not_found [0.025797s] ... ok {1} ironic.tests.unit.objects.test_deployment.TestDeploymentObject.test_refresh [0.030053s] ... ok {1} ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce [0.018347s] ... ok {1} ironic.tests.unit.objects.test_fields.TestMacAddressField.test_coerce_bad_values [0.017746s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_create [0.021046s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_get_firmware_component [0.024853s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_get_firmware_component_does_not_exist [0.023038s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_get_firmware_component_node_does_not_exist [0.023123s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_save [0.024349s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_sync_firmware_components_create_and_update [0.027903s] ... ok {1} ironic.tests.unit.objects.test_firmware.TestFirmwareComponentObject.test_sync_firmware_components_nochange [0.032264s] ... ok {1} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_create [0.021966s] ... ok {1} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_destroy [0.021660s] ... ok {1} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get [0.022467s] ... ok {1} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_id [0.022138s] ... ok {1} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_get_by_uuid [0.251926s] ... ok {1} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list [0.023510s] ... ok {1} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_by_node_id [0.023299s] ... ok {1} ironic.tests.unit.objects.test_node_history.TestNodeHistoryObject.test_list_none [0.023571s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_api [0.021077s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_conductor [0.019653s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_api [0.019751s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test__process_object_convert_conductor [0.019733s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport [0.019048s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_revision_does_not_backport_zero [0.020489s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_backports [0.020379s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_newer_version_passes_revision [0.019291s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_pin_ignored [0.018757s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_deserialize_entity_same_revision_does_not_backport [0.018634s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization [0.019418s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_object_serialization_iterables [0.020030s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_invalid_pin [0.018773s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_api [0.021328s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_pinned_conductor [0.023196s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_api [0.024927s] ... ok {1} ironic.tests.unit.objects.test_objects.TestObjectSerializer.test_serialize_entity_unpinned_conductor [0.020591s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported [0.021082s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_missing [0.022142s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_supported_set [0.020554s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported [0.021123s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_missing [0.020446s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_default [0.019753s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_no_remove_non_default [0.019261s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_is_smartnic_unsupported_set_remove [0.020722s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_missing [0.025013s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_supported_set [0.024130s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_missing [0.025703s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_default [0.024853s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_no_remove_non_default [0.025443s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_name_unsupported_set_remove [0.024159s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_missing [0.023705s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_supported_set [0.026898s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_missing [0.027133s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_default [0.022783s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_no_remove_non_default [0.022442s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_physnet_unsupported_set_remove [0.020879s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra [0.020771s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_in_internal_info [0.020172s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_lower_version [0.020457s] ... ok {1} ironic.tests.unit.objects.test_port.TestConvertToVersion.test_vif_in_extra_not_in_extra [0.020981s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_create [0.022883s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_get_bad_id_and_uuid_and_name_and_address [0.022187s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_address [0.022985s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_id [0.023129s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_name [0.027340s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_get_by_uuid [0.023911s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_list [0.023284s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_list_deprecated_owner [0.022262s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_payload_schemas [0.022560s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_refresh [0.023967s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_save [0.024837s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_save_after_refresh [0.039832s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_supported [0.022414s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_supports_is_smartnic_unsupported [0.023504s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_supported [0.023936s] ... ok {1} ironic.tests.unit.objects.test_port.TestPortObject.test_supports_physical_network_unsupported [0.026332s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_as_dict [0.024651s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_create [0.024399s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_create_list [0.024140s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy [0.024866s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_destroy_list [0.024042s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_exists [0.024609s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_by_id [0.024362s] ... ok {1} ironic.tests.unit.objects.test_trait.TestTraitObject.test_get_trait_names [0.021810s] ... ok {1} ironic.tests.unit.pxe_filter.test_dnsmasq.TestExclusiveWriteOrPass.test_write [0.022574s] ... ok {1} ironic.tests.unit.pxe_filter.test_dnsmasq.TestExclusiveWriteOrPass.test_write_custom_ioerror [0.025017s] ... ok {1} ironic.tests.unit.pxe_filter.test_dnsmasq.TestExclusiveWriteOrPass.test_write_would_block [0.024788s] ... ok {1} ironic.tests.unit.pxe_filter.test_dnsmasq.TestExclusiveWriteOrPass.test_write_would_block_too_many_times [0.023434s] ... ok ====== Totals ====== Ran: 9667 tests in 190.8161 sec. - Passed: 9617 - Skipped: 50 - Expected Fail: 0 - Unexpected Success: 0 - Failed: 0 Sum of execute time for each test: 636.3971 sec. ============== Worker Balance ============== - Worker 0 (1797 tests) => 0:01:42.379900 - Worker 1 (2876 tests) => 0:03:10.816107 - Worker 2 (2373 tests) => 0:03:01.641529 - Worker 3 (2621 tests) => 0:02:48.590842 Test id Runtime (s) ----------------------------------------------------------------------------------------------------------------------------- ----------- ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_fail_to_on 4.052 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_timeout 3.076 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_timeout 3.069 ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit_stream_optimized 2.241 ironic.tests.unit.common.test_format_inspector.TestFormatInspectors.test_vmdk_bad_descriptor_mem_limit 2.133 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_reboot_ok 2.056 ironic.tests.unit.conductor.test_periodics.NodePeriodicTestCase.test_simple 2.056 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_soft_power_off_ok 2.047 ironic.tests.unit.drivers.modules.ilo.test_power.IloPowerInternalMethodsTestCase.test__set_power_state_off_fail 2.042 ironic.tests.unit.db.test_nodes.DbNodeTestCase.test_update_node_retries_without_log_mock 1.274 ___________________________________ summary ____________________________________ py39: commands succeeded congratulations :) + RPM_EC=0 ++ jobs -p + exit 0 Processing files: openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.noarch Provides: openstack-ironic = 1:26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.noarch warning: File not found: /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/lib/python3.9/site-packages/ironic_tests.egg_info Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.meyeb5 + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.dev2 + DOCDIR=/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64/usr/share/doc/openstack-ironic-common + cp -pr README.rst /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/share/doc/openstack-ironic-common + cp -pr etc/ironic/policy.yaml.sample /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.8sZ5T5 + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.dev2 + LICENSEDIR=/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64/usr/share/licenses/openstack-ironic-common + cp -pr LICENSE /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64/usr/share/licenses/openstack-ironic-common + RPM_EC=0 ++ jobs -p + exit 0 Provides: config(openstack-ironic-common) = 1:26.1.6-0.20260412074315.1a3eba7.el9 openstack-ironic-common = 1:26.1.6-0.20260412074315.1a3eba7.el9 python3.9dist(ironic) = 26.1.6~~dev2 python3dist(ironic) = 26.1.6~~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.6-0.20260412074315.1a3eba7.el9.noarch Provides: openstack-ironic-api = 1:26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.noarch Provides: openstack-ironic-conductor = 1:26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.noarch Executing(%license): /bin/sh -e /var/tmp/rpm-tmp.PIghO9 + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.dev2 + LICENSEDIR=/builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.x86_64/usr/share/licenses/openstack-ironic-dnsmasq-tftp-server + cp -pr LICENSE /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9 openstack-ironic-dnsmasq-tftp-server = 1:26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.noarch Provides: openstack-ironic-pxe-filter = 1:26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9.noarch Provides: python-ironic-tests = 1:26.1.6-0.20260412074315.1a3eba7.el9 python3-ironic-tests = 1:26.1.6-0.20260412074315.1a3eba7.el9 python3.9-ironic-tests = 1:26.1.6-0.20260412074315.1a3eba7.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.6-0.20260412074315.1a3eba7.el9 Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64 Wrote: /builddir/build/SRPMS/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.src.rpm Wrote: /builddir/build/RPMS/openstack-ironic-dnsmasq-tftp-server-26.1.6-0.20260412074315.1a3eba7.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-api-26.1.6-0.20260412074315.1a3eba7.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-conductor-26.1.6-0.20260412074315.1a3eba7.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-pxe-filter-26.1.6-0.20260412074315.1a3eba7.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.noarch.rpm Wrote: /builddir/build/RPMS/openstack-ironic-common-26.1.6-0.20260412074315.1a3eba7.el9.noarch.rpm Wrote: /builddir/build/RPMS/python3-ironic-tests-26.1.6-0.20260412074315.1a3eba7.el9.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.2p39o3 + umask 022 + cd /builddir/build/BUILD + cd ironic-26.1.6.dev2 + /usr/bin/rm -rf /builddir/build/BUILDROOT/openstack-ironic-26.1.6-0.20260412074315.1a3eba7.el9.x86_64 + RPM_EC=0 ++ jobs -p + exit 0 Child return code was: 0